首页 > 后端开发 > Python教程 > 在 Python 中迭代时如何安全地从列表中删除元素?

在 Python 中迭代时如何安全地从列表中删除元素?

Barbara Streisand
发布: 2024-12-30 05:05:09
原创
854 人浏览过

How to Safely Remove Elements from a List While Iterating in Python?

在迭代期间从列表中删除元素

在 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函数过滤掉不需要的元素。

附加说明

  • 确定function 是自定义标准函数的占位符,用于确定要处理哪些元素
  • 如果对 somelist 的其他引用需要反映更改,则切片分配解决方案可能很有用。
  • 如果您只需要检查特定值,可以直接在中使用 if 语句循环。

以上是在 Python 中迭代时如何安全地从列表中删除元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板