我有一个清单
test_list = [1,2,3,4,5]
我想迭代这个列表的元素并在使用后删除它们。但是当我尝试这样做时
for element in test_list:
print element
test_list.remove(element)
从test_list
1
3
5
print test_list
[2, 4]
请解释为什么会这样!
答案 0 :(得分:2)
阅读 strange result when removing item from a list 的答案,了解发生这种情况的原因。
如果您确实需要在迭代时修改列表,请执行以下操作:
>>> items = ['x', 'y', 'z']
>>> while items:
... item = items.pop()
... print item
...
z
y
x
>>> items
[]
请注意,这将以相反的顺序迭代。
答案 1 :(得分:1)
在python中,这个概念称为迭代器
my_iter = iter(my_list)
每次消耗或查看元素时它都会消失......