把for循环换成while之后是哪里出错了呢
while L.pop(1)==True:
sum+=L[1]*L[1]
L.pop(1)
while L.pop(1)==True:
sum+=L[1]*L[1]
L.pop(1)
2015-06-24
最好能把上下文全都贴出来,光这行代码看不出要干什么。
while里的判断条件是「把列表的第2个元素pop出来看等不等于True」。
如果这个判断的目的是看迭代中列表还有没有第2个元素的话,那显然是错误的,你看下面的例子:
L = [1, 2, 3] L.pop(1) # 2 L # [1, 3] L.pop(1) # 3 L # [1] L.pop(1) # IndexError: pop index out of range
看到了吗?最后的输出是「超出范围」,是个索引错误,而不是True/False(有还没有)。
如果你一定要用L.pop(1)==True做判断的话,除非你的目的是「只要列表的第2个元素不为0就能迭代下去」,但这有什么意义呢?
L = [1, 2, 3, 0, 5, 6] # 你不停的pop出来第2个元素,直到L=[1, 0, 5, 6] L.pop(1) # 返回值为0,需要说明的是python里True和1等价,False和0等价,所以此时0!=True,迭代结束
现在L里还有1,5,6那么些数呢,打算怎么办?
举报