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

发布于 2021-02-02 23:16:00

我有一个清单

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

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

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

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

关注者
0
被浏览
116
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看