【问题标题】:Delete list elements after using them [duplicate]使用后删除列表元素[重复]
【发布时间】:2015-09-02 21:28:25
【问题描述】:

我有一个清单

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]

请解释为什么会这样!

【问题讨论】:

  • 查看“相关”列表。你会发现几个重复的答案。
  • 跟着我重复:不要在迭代时修改它们。

标签: python list python-2.7 iterator


【解决方案1】:

阅读 strange result when removing item from a list 的答案,了解为什么会发生这种情况。

如果您确实需要在迭代时修改列表,请执行以下操作:

>>> items = ['x', 'y', 'z']
>>> while items:
...     item = items.pop()
...     print item
...
z
y
x
>>> items
[]

请注意,这将以相反的顺序迭代。

【讨论】:

  • 一种以初始顺序进行迭代的方法就是在运行循环之前调用 test_list.reverse()
【解决方案2】:

在python中这个概念称为迭代器

my_iter = iter(my_list)

每次您消费或查看一个元素时,它都会消失...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2015-01-05
    • 2020-08-02
    • 2018-05-02
    • 2012-05-09
    • 2014-07-06
    • 1970-01-01
    相关资源
    最近更新 更多