我正在使用Enthought冠层Python 2.7.9
一个非常简单的Python程序,涉及for
,range
和len
:
num = 10
mylist = range(num)
for i in range(len(mylist)):
print "Size of mylist is %d" %(len(mylist))
print "i=%d" %(i)
print "mylist[%d] %d" %(i, mylist[i])
mylist=mylist[:-1]
令我感到困惑的是,由于mylist
的长度减少到5,为什么索引i
仍然可以为5,导致索引错误?
我在Python中知道for循环可以使用iterable。但我不知道这个机制在这个例子中是如何工作的。
答案 0 :(得分:2)
迭代时不要更改列表的大小。删除这一行:
mylist=mylist[:-1]
它会起作用。
列表的长度仅在此确定一次:
for i in range(len(mylist)):
和i
将采用0
到9
的所有值。稍后更改列表大小时,不会重新计算长度。