一尘不染

如何在Python中的for循环中删除列表元素?

python

我有一个清单

a = ["a", "b", "c", "d", "e"]

我想在如下所示的for循环中删除此列表中的元素:

for item in a:
    print item
    a.remove(item)

但这是行不通的。我能做什么?


阅读 1565

收藏
2020-02-19

共1个答案

一尘不染

使用for循环遍历列表时,不允许从列表中删除元素。

重写代码的最佳方法取决于你要执行的操作。

例如,你的代码等效于:

for item in a:
  print item
a[:] = []

另外,你可以使用while循环:

while a:
  print a.pop(0)

我正在尝试删除符合条件的项目。然后我转到下一个项目。

你可以将每个不符合条件的元素复制到第二个列表中:

result = []
for item in a:
  if condition is False:
    result.append(item)
a = result

或者,你可以使用filter或列表推导并将结果分配回a:

a = filter(lambda item:... , a)

要么

a = [item for item in a if ...]

其中…代表你需要检查的条件。

2020-02-19