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

新手上路,请多包涵

我有一个清单

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

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

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

但它不起作用。我能做什么?

原文由 alwbtc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 286
2 个回答

在使用 for 循环对其进行迭代时,不允许从列表中删除元素。

重写代码的最佳方式取决于您要做什么。

例如,您的代码等效于:

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

或者,您可以使用 while 循环:

 while a:
    print(a.pop())

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

您可以将与条件 匹配的每个元素复制到第二个列表中:

 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 ...]

其中 ... 代表您需要检查的条件。

原文由 NPE 发布,翻译遵循 CC BY-SA 4.0 许可协议

遍历列表的副本:

 >>> a = ["a", "b", "c", "d", "e"]
>>> for item in a[:]:
    print(item)
    if item == "b":
        a.remove(item)

a
b
c
d
e
>>> print(a)
['a', 'c', 'd', 'e']

原文由 Alex L 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题