当前位置: 首页 > 面试题库 >

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

邓才
2023-03-14
问题内容

我有一个清单

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

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

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

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


问题答案:

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

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



 类似资料:
  • 问题内容: 嗨,我有一个问题,在遍历python中的列表时我似乎无法删除项目,这就是我得到的:如果用户在for循环中被问到要删除的问题时输入n或N,则应该删除标题,问题在于,当所有操作完成后,所有项目仍然存在,并且没有任何项目被移除… 问题答案: 以下代码将解决您的问题。您必须遍历列表的副本。您无法从要迭代的列表中删除项目。

  • 问题内容: 现在,我知道在迭代循环中修改列表是不安全的。但是,假设我有一个字符串列表,并且我想剥离字符串本身。可变值的替换是否算作修改? 问题答案: 它被认为是不良形式。如果需要保留对列表的现有引用,请改用列表理解和切片分配。

  • 问题内容: 有人可以向我解释此Python代码段的最后一行吗? 只是另一类。我不明白如何使用循环将对象存储到对象中。 问题答案: 您要询问的代码行是使用列表推导创建一个列表,并将在此列表中收集的数据分配给。相当于 说明 : 为了最好地解释它是 如何 工作的,可以使用一些简单的示例来帮助您 理解 所拥有的代码。如果您要继续使用Python代码,则将再次遇到列表理解,您可能想自己使用它。 注意,在下面

  • 问题内容: 我想遍历一个数组,以检查是否存在一个值。如果该值确实存在,我想删除包含它的元素。 我有以下代码: 找到值后,我不知道如何删除该元素。如何删除? 我必须使用这个问题。可能有替代方法,欢迎您共享它们。 问题答案: 如果您还获得了密钥,则可以这样删除该项目:

  • 问题内容: 我想从Python中的常量列表创建lambda对象列表;例如: 但是,当我运行它们时,这将创建一个lambda对象列表: 我希望它会打印 而是打印: 似乎所有lambda都被赋予了错误的参数。我做错了什么,有办法解决吗?我认为我使用的是Python 2.4。 编辑:更多尝试的事情,例如这样: 打印从1到25的期望平方,然后使用之前的print语句: 仍然给了我全部。现有的lambda对

  • 我知道不建议在迭代时从列表中删除元素。 您最好使用iterator.remove()、java流,或者将remove复制到外部列表中。 但这段简单的代码正好起作用: 使用安全吗?