在迭代期间从列表中删除元素
在 Python 中迭代列表时,了解如何删除满足特定条件的项目非常重要标准。但是,尝试在迭代时修改列表可能会引发问题。
困境
考虑以下代码块:
for tup in somelist: if determine(tup): # How do I remove 'tup' here?
如何您从列表中删除 tup,同时保留迭代器?
解决方案
这个问题有几种解决方案:
1.列表理解
somelist = [x for x in somelist if not determine(x)]
此方法创建一个新列表,仅包含不需要删除的元素。
2.切片分配
somelist[:] = [x for x in somelist if not determine(x)]
此分配会将现有列表更改为仅包含所需的元素。
3. Itertools
from itertools import filterfalse somelist[:] = filterfalse(determine, somelist)
此方法使用Python的filterfalse函数过滤掉不需要的元素。
附加说明
以上是在 Python 中迭代时如何安全地从列表中删除元素?的详细内容。更多信息请关注PHP中文网其他相关文章!