list.remove(item)在Python中,它是如何工作的?

参见英文答案 >
Removing Item From List – during iteration – what’s wrong with this idiom?                                    8个

我想删除列表中的所有内容.但有些事让我很困惑……

这是代码.

    lst = [4,4,5,5]

for i in lst:
    if i % 2 == 0:
        print i
        lst.remove(i)

print lst

它打印[4,5,5]为什么不[5,5]?

最佳答案 它应该是这样的

for i in lst[:]:
    if i % 2 == 0:
        print i
        lst.remove(i)

print lst

问题:

您在迭代时修改列表.由此迭代在​​完成之前停止

解:

您可以迭代列表的副本

你可以使用列表理解:

lst=[i for i in lst if i%2 != 0]
点赞