从 python 列表中删除元素

Remove elements from python list

我试图理解这里的逻辑,为什么这段代码没有删除列表中的所有元素?

int_lst = [1, 2, 3, 4, 5, 6]

for i in int_lst:
    int_lst.remove(i)
    print(int_lst)

print(int_lst)  #Output: [2, 4, 6]

当您删除一个元素时,该元素之后的所有内容都会有效地移回一个位置。但是迭代器并不知道:它只是将指针前进到下一个元素,跳过本应绑定到 i.

的下一个值。

具体来说,i从1开始,你去掉它,现在2在迭代器的当前位置。迭代器前进,现在 3 在当前位置并绑定到 i.

换句话说,每次删除元素时,都会有效地推进迭代器,此外迭代器将执行的显式推进。

发生这种情况是因为您要删除正在迭代的同一个列表中的元素。您可以通过避免这种情况轻松修复它:

for i in list(int_lst):
    int_lst.remove(i)