如何在 Python 中的 for 循环中删除列表元素?[重复]
- 2024-12-16 08:35:00
- admin 原创
- 63
问题描述:
我有一个清单
a = ["a", "b", "c", "d", "e"]
我想在 for 循环中删除此列表中的元素,如下所示:
for item in a:
print(item)
a.remove(item)
但它不起作用。我该怎么办?
解决方案 1:
使用循环对列表进行迭代时,不允许从列表中删除元素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 ...]
其中...
代表您需要检查的条件。
解决方案 2:
迭代列表的副本:
>>> 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']
解决方案 3:
正如其他答案所说,最好的方法是创建一个新列表 - 要么迭代副本,要么构造一个仅包含所需元素的列表并将其分配回同一变量。它们之间的区别取决于您的用例,因为它们对原始列表的其他变量的影响不同(或者说,第一个影响它们,第二个不影响它们)。
如果出于某种原因无法选择复制,您还有另一个选择,该选择依赖于对修改迭代列表中断的原因的理解。列表迭代的工作原理是跟踪索引,在循环中每次递增它,直到它脱离列表的末尾。因此,如果您在当前索引处(或之前)删除,则从该点到末尾的所有内容都会向左移动一个位置。但迭代器不知道这一点,并且实际上跳过了下一个元素,因为它现在位于当前索引而不是下一个索引。但是,删除当前索引之后的内容不会产生影响。
这意味着如果您从后向前迭代列表,如果您删除当前索引处的项目,则其右侧的所有内容都会向左移动 - 但这并不重要,因为您已经处理了当前位置右侧的所有元素,并且您正在向左移动 - 左边的下一个元素不受更改的影响,因此迭代器会为您提供您期望的元素。
总结:
>>> a = list(range(5))
>>> for b in reversed(a):
if b == 3:
a.remove(b)
>>> a
[0, 1, 2, 4]
但是,从使代码更易于阅读的角度来看,制作副本通常更好。我只是为了完整性而提到这种可能性。
解决方案 4:
import copy
a = ["a", "b", "c", "d", "e"]
b = copy.copy(a)
for item in a:
print(item)
b.remove(item)
a = copy.copy(b)
工作原理:为了避免更改您正在迭代的列表,您可以复制a
,对其进行迭代并从 中删除项目b
。然后将b
(更改后的副本)复制回a
。
解决方案 5:
如何创建一个新列表并将所需的元素添加到该新列表中。在迭代列表时不能删除元素
解决方案 6:
回答这个问题可能有点晚了,但我刚刚发现这个线程,并且我之前已经为它创建了自己的代码......
list = [1,2,3,4,5]
deleteList = []
processNo = 0
for item in list:
if condition:
print(item)
deleteList.insert(0, processNo)
processNo += 1
if len(deleteList) > 0:
for item in deleteList:
del list[item]
这可能是一个漫长的过程,但似乎效果很好。我创建了第二个列表,其中只包含与要删除的列表项相关的数字。请注意,“插入”会在位置 0 处插入列表项编号,并将其余部分推入,因此在删除项目时,列表会从最高数字删除到最低数字,因此列表保持顺序。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件