列表迭代期间删除项目
在 Python 中迭代列表时,可能需要根据特定条件删除某些项目。但是,尝试直接在迭代中删除项目可能会导致意外行为。这就是需要替代方法的地方。
列表理解
一种解决方案是使用列表理解,它允许创建一个仅包含所需的元素。例如:
somelist = [x for x in somelist if not determine(x)]
此推导式创建一个新列表,其中包含 somelist 的所有元素,其中确定()函数计算结果为 False。
切片突变
另一种方法是使用切片来改变现有列表。通过分配给 somelist[:],可以修改列表以仅包含可接受的元素:
somelist[:] = [x for x in somelist if not determine(x)]
此方法保留原始列表引用,当程序的其他部分需要访问修改后的列表。
Itertools
在 Python 2 或 3 中,itertools可以用来达到相同的结果。在 Python 2 中:
from itertools import ifilterfalse somelist[:] = ifilterfalse(determine, somelist)
在 Python 3 中:
from itertools import filterfalse somelist[:] = filterfalse(determine, somelist)
以上是在 Python 中迭代时如何安全地从列表中删除项目?的详细内容。更多信息请关注PHP中文网其他相关文章!