为什么python remove会表现得那样?

时间:2011-03-19 21:34:13

标签: list python-3.x

我知道有更好的方法可以做到这一点,实际上并不是我想要做的,但我想知道它为什么不起作用?

x = [13, 3, 9, 41]
for i in x:
    x.remove(i)
print(x)
[3, 41]

列表不应该为空吗?

2 个答案:

答案 0 :(得分:1)

你不应该在循环中修改列表,试试这个:

x = [13, 3, 9, 41]
for i in x[:]:
    x.remove(i)
print(x)

这会循环遍历x的副本,但会从x删除元素。

这是Python strange behavior in for loop or lists的副本,你可以在那里找到更全面的解释。

答案 1 :(得分:1)