如何在Python中迭代列表时从列表中删除元素? [复制]

2023-12-03

给定一个数字列表:

L = [1, 2, 3, 4, 5]

当我迭代它时,如何从列表中删除一个元素(假设是 3)?

我尝试了以下代码,但没有成功:

for el in L:
    if el == 3:
        del el

最好的做法通常是建设性地进行——建立你想要的新项目列表,而不是删除那些你不需要的项目。例如。:

L[:] = [el for el in L if el != 3]

列表理解构建所需的列表并分配给“整个列表切片”,L[:],确保你是not只是重新绑定一个名称,但完全替换contents,因此效果与您想要执行的“删除”完全相同。这也很快。

如果你绝对,不惜一切代价,must相反,进行删除,一种微妙的方法可能会起作用:

>>> ndel = 0
>>> for i, el in enumerate(list(L)):
...    if el==3:
...      del L[i-ndel]
...      ndel += 1

没有哪个地方像 listcomp 方法那样优雅、干净、简单或性能良好,但它确实完成了这项工作(尽管乍一看它的正确性并不明显,事实上我在编辑之前就错了!-)。 “不惜一切代价”此处适用;-)。

对于“必须删除”的情况,用索引循环代替项目是另一种较差但可行的方法 - 但请记住reverse在这种情况下的索引...:

for i in reversed(range(len(L))):
  if L[i] == 3: del L[i]

事实上,这是一个主要用例reversed当我们争论是否添加内置功能时——reversed(range(...没有的话就不容易获得reversed,并且以相反的顺序循环列表有时很有用。另一种选择

for i in range(len(L) - 1, -1, -1):

真的很容易出错;-)。

尽管如此,我在这个答案开始时推荐的 listcomp 看起来越来越好,因为检查了替代方案,不是吗?-)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中迭代列表时从列表中删除元素? [复制] 的相关文章

  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 如何在 Palantir Foundry 中解析 xml 文档?

    我有一套 xml我想要解析的文档 我以前曾尝试使用获取文件内容并将它们转储到单个单元格中的方法来解析它们 但是我注意到这在实践中不起作用 因为我看到运行时间越来越慢 通常只有一项任务需要执行运行数十小时 我的第一个变换是 xml内容并将其放
  • 带有光标鼠标射线原点的 aframe 嵌入场景

    嵌入场景和鼠标光标选项似乎存在错误 cursor rayOrigin mouse 我在一个盒子上放置了 mouseenter 和 mouseleave 事件来改变它的大小 只要页面包含在浏览器中 它就可以正常工作 但是当页面 可滚动 时 事
  • 使用corona sdk的后台无限

    我正在尝试滚动 Corona sdk 中的背景 无限背景 我重复使用了两张图像 854x176 我尝试了这个功能 function mov self event if self x lt 854 then self x 854 else s
  • 是否可以从本机代码访问 Dalvik VM

    我希望能够使用 Android 中的本机代码来定位 Dalvik VM 这意味着使用中列出的本机类平台 dalvik在 android 源存储库下 我特别想打电话Sync dvmLockObject及其对应物Sync dvmUnlockOb
  • 没有数组的埃拉托斯特尼筛法?

    我必须为 埃拉托斯特尼筛 算法编写一个java代码 以便在控制台上打印出达到给定最大值的素数 但我不允许使用数组 我们的教授告诉我们 只有借助循环才能做到这一点 所以我想了很多 也用谷歌搜索了很多关于这个话题的信息 但找不到答案 我认为这根
  • 无法在 Javafx 应用程序中为 javascript 创建 javax 脚本引擎

    我正在使用 NetBeans 12 0 和 windows 10 64 位 我的 JDK 是 15 0 2 和 JavaFx SDK 16 当我尝试构建我的 javafx 应用程序时 它显示以下构建错误 C Users musta OneD
  • 来自 survfit 对象和 textConnection 的中值

    我使用了其他人的方法来获取中位数survfit对象 即使用textConnecton 但我遇到了几个问题 example library survival data cancer cox ph lt coxph Surv time stat
  • php循环遍历json数组

    我有一个像这样的 json 字符串 fields string fields customers name john id d1 name mike id d2 name andrew id d3 name peter id d4 如何打印
  • PHP 5.3 中的闭包内的 $this 是否有解决方法?

    我的 IDE 警告我 thisPHP 5 4 之前的闭包中不允许使用 是否有解决方法 无需从 5 3 10 升级 PHP 看fire 方法如下
  • 在 UIPageViewController 中禁用页面滚动[重复]

    这个问题在这里已经有答案了 我正在开发使用 UIPageViewController 的应用程序 现在我想禁用页面滚动而不是手势 实际上我想在 UIPageViewController 中包含的视图中绘制签名 为此我需要禁用页面滚动 我已经
  • 如何使用 WEB-INF/lib 中的服务器 jar 覆盖服务器 jar 或使用它们?

    我有一个Web应用程序应该使用WEB INF lib中包含的JSF 2 0库 但它没有 而不是我收到异常 因为我的服务器 JBoss 4 2 也提供了JSF库 我如何强制我的应用程序使用 WEB INF lib 中的 jar Note 当我
  • 在R中使用“unlink”后如何取回文件?

    我不小心删除了一些有用的文件 文件已被删除 我在回收站中找不到它们 我想知道怎样才能拿回来 我使用的是 Windows 8 1 我的文档中的所有文件都在R中使用unlink删除了 我尝试使用R delete来恢复 但它只能恢复从回收站删除的
  • 系统/应用程序中的 APK 何时安装?

    我创建了一个自定义系统映像 并将一个额外的 APK 放入系统 应用程序中 这有点有效 我可以运行该应用程序 但是本机库未加载 loadLibrary 失败 当我打电话时pm install在 APK 上 一切正常并且本地库加载 我的结论是
  • 返回回调(从 CustomView 中打开 DialogFragment)

    这与我之前的问题有关 从 CustomView 中打开 DialogFragment 我现在需要使用回调从 DialogFragment 返回一个值 据我了解 通常会这样做 public class MyDialogFragment ext
  • 如何在乌龟中创建按钮?

    如何在turtle python中创建一个简单的按钮 如果单击它 您可以定义它来打印消息 或者做其他更复杂的事情 You can embed正如 JoshuaNixon 在他的评论中建议的那样 tkinter 中的海龟使用 tkinter
  • 微风过滤。在服务器端扩展

    我正在尝试BreezeJS 有一个要求我可以使用 expand在客户端代码中 但基于role对于该用户 服务器端不会返回该用户的所有记录 expand请求的类型 我尝试创建一个自定义BreezeQueryable属性并重写一个方法来完全过滤
  • PHP:如何发送HTTP响应代码?

    我有一个 PHP 脚本 需要使用 HTTP 响应代码 状态代码 进行响应 例如 HTTP 200 OK 或某些 4XX 或 5XX 代码 我怎样才能在 PHP 中做到这一点 我刚刚发现这个问题并认为它需要更全面的答案 As of PHP 5
  • 自动解决主键合并冲突

    你能建议我自动解决的方法吗 发布者和订阅者之间合并期间的主键冲突 看来 Sql Server 并没有开箱即用 冲突查看器向我显示下一条消息 在 publisher server 处插入的行无法传播到 subscriber server 此失
  • 使用 Hibernate 通过 SSH 隧道获取数据

    最近开始学习Hibernate技术 要使用Hibernate从数据库中获取数据 问题是我只能通过 SSH 隧道连接到数据库 有没有我可以使用的属性hibernate cfg xml文件来解决这个问题 或者您可以提出另一种新手可以理解的方法
  • 如何在Python中迭代列表时从列表中删除元素? [复制]

    这个问题在这里已经有答案了 给定一个数字列表 L 1 2 3 4 5 当我迭代它时 如何从列表中删除一个元素 假设是 3 我尝试了以下代码 但没有成功 for el in L if el 3 del el 最好的做法通常是建设性地进行 建立