使用后删除列表元素

时间:2015-09-02 21:28:25

标签: python list python-2.7 iterator

我有一个清单

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]

请解释为什么会这样!

2 个答案:

答案 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)

每次消耗或查看元素时它都会消失......