索引错误:列出索引输出范围

时间:2016-01-13 01:51:20

标签: python loops for-loop

我正在使用Enthought冠层Python 2.7.9 一个非常简单的Python程序,涉及forrangelen

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。但我不知道这个机制在这个例子中是如何工作的。

1 个答案:

答案 0 :(得分:2)

迭代时不要更改列表的大小。删除这一行:

mylist=mylist[:-1] 

它会起作用。

列表的长度仅在此确定一次:

for i in range(len(mylist)):

i将采用09的所有值。稍后更改列表大小时,不会重新计算长度。