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

for i in range(len(lst)):

if lst[i][0]==1 or lst[i][1]==1:

lst.remove(lst[i])

return lst

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

解决方案

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 "", line 1, in

IndexError: list index out of range

It's safer to construct a new list:

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