【发布时间】:2011-03-19 21:34:13
【问题描述】:
我知道有更好的方法可以做到这一点,这实际上不是我想做的,但我想知道为什么它不起作用?
x = [13, 3, 9, 41]
for i in x:
x.remove(i)
print(x)
[3, 41]
列表不应该是空的吗?
【问题讨论】:
标签: list python-3.x
我知道有更好的方法可以做到这一点,这实际上不是我想做的,但我想知道为什么它不起作用?
x = [13, 3, 9, 41]
for i in x:
x.remove(i)
print(x)
[3, 41]
列表不应该是空的吗?
【问题讨论】:
标签: list python-3.x
你不应该在循环中修改列表,试试这个:
x = [13, 3, 9, 41]
for i in x[:]:
x.remove(i)
print(x)
这将遍历x 的副本,但会从x 中删除元素。
这是Python strange behavior in for loop or lists的复制品,你可以在那里找到更详尽的解释。
【讨论】:
remove 的行为是否未定义?因为它在某些情况下有效,而在其他情况下无效。如果它根本不起作用(或者至少它会产生警告、异常等),那就太好了。
【讨论】: