(Python)列表索引超出范围 - 迭代

问题描述:

for i in range(len(lst)):    
   if lst[i][0]==1 or lst[i][1]==1:
        lst.remove(lst[i])
return lst

这给出IndexError:列表索引超出范围为什么会发生这种情况?

This gives "IndexError: list index out of range" Why is this happening?

您正在修改您正在迭代的列表。如果你这样做,列表的大小会缩小,所以最终 lst [i] 将超出列表的边界。

You're modifying the list you're iterating over. If you do that, the size of the list shrinks, so eventually lst[i] will point beyond the list's boundaries.

>>> lst = [1,2,3]
>>> lst[2]
3
>>> lst.remove(1)
>>> lst[1]
3
>>> lst[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

构建新列表更安全:

return [item for item in lst if item[0]!=1 and item[1]!=1]