用于迭代变化列表的 Python 习惯用法

2023-12-02

python 中是否有更好的(更明显/惯用的)方法来编写等效的

index = 0
while index < len(some_list):
    do_some_stuff(some_list[index]) # may have many side effects
    if delete_element(some_list[index]):
        del some_list[index]
    else:
        index += 1

或者字典中与此等效的字典?字典/列表理解不是一件事,因为结果delete_element可能取决于do_some_stuff.


您可以将操作分解为两个单独的循环,并为第二部分使用列表理解。

for value in some_list:
    do_some_stuff(value)

some_list = [value for value in some_list if not delete_element(value)]

另一个解决方案是迭代列表的副本,然后使用enumerate无需手动维护计数器即可跟踪指数。

for index, value in enumerate(some_list[::-1]):
    do_some_stuff(value)
    if delete_element(value):
        del some_list[-index - 1]

你想要向后迭代,这样你就不必调整index对于被删除的元素。

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

用于迭代变化列表的 Python 习惯用法 的相关文章

随机推荐

  • 在cuda中求对数

    如何在cuda中找到对数 我正在寻找设备功能 Thanks 您可以使用 logf x logf x log2f x log2f x log10f x log10f x 取自CUDA 编程指南 附录 D
  • 在cuda中分配结构数组后变量丢失

    我有一个用 C 语言编写的结构体 其中包含结构体数组 我需要在 GPU 中复制该结构体 为此 我正在编写一个函数 使一些cudaMalloc and cudaMemcpy从主机到设备的结构体中的变量 该结构的一个简单版本 真正的版本内部有各
  • java中为什么需要方法重载和重写? [复制]

    这个问题在这里已经有答案了 可能的重复 多态 重写 重载 我很难知道为什么需要方法重载和覆盖在java中 我读过一些关于此的文章 但无法理解为什么实际上需要它 我还访问了 stackoverflow 中的以下网址 但我还不清楚这个主题 Ja
  • 使用 Entity Framework 4 数据注释进行日期范围验证

    我使用 Entity Framework 4 为 ASP NET MVC3 Razor2 Web 应用程序提供模型 我正在使用 DataAnnotations 来实现验证 我需要将某些日期限制在 SQL Smalldatetime 类型接受
  • jpa 获取连接查询

    这是我的域名的样子 public class Template implements Serializable private static final long serialVersionUID 1L OneToOne cascade C
  • Excel 2007 MS Query 中出现多部分标识符错误,但 SQL Server 2008 中没有

    我有以下 SQL 代码 SELECT pd1 Meter pd1 BasicPool pd1 RateClass pd1 Flowdate SELECT upOrDownContract FROM PipelineData pd WHERE
  • 如何在后台显示 Swift UI 中的通讯通知?

    我正在 SwiftUI 和 firebase 中制作一个聊天应用程序 我想在用户收到新消息时显示通知 我能够在 firebase 中使用云消息发送推送通知 但这些通知不会自动发送 现在我想在用户收到消息时自动发送通信通知 我无法在 swif
  • 如何在 CDE 中添加全选选项来选择组件

    对于学生项目 我们正在与 Pentaho CDE 合作创建一个仪表板 一开始它工作得很好 但现在我们正处于添加多个选择组件的阶段 我们将选择组件的参数插入到Where语句中的SQL查询中 但现在我们遇到了一个问题 即不可能选择一个选择组件中
  • 在 C 中使用 libcurl 保存文件

    我正在从 perl 扩展到 C 并且尝试使用curl 的库来简单地从远程 url 保存文件 但我很难找到一个很好的示例来工作 另外 我不确定是否应该使用curl easy recv或curl easy perform I find 这个资源
  • 使用 const 引用延长临时对象的寿命

    我需要一些关于 const 引用的澄清 从这个链接 const Foo myFoo FuncBar const 引用延长了本地对象的寿命 但当我检查时这个链接尽管他们使用了 const 引用 Sandbox const string n m
  • 如何将Struts 2操作类中的InputStream值传递给JSP页面中的Ajax并将该值转换为JSON数组

    我想将 JSON 数组从 Struts 2 操作类传递到 JSP 页面 我正在尝试将数据集作为字符串发送 我想知道的是 如何在 JavaScript 中读取这些数据 这是我的方法Action class private InputStrea
  • Javascript - 模拟 Chrome 53 上的按键事件

    我正在尝试模拟按键事件 按下 铬53 我在 StackOverflow 上找到的所有解决方案似乎都不起作用 我的目标是拥有一个函数keyCode并用它模拟按键 需要纯JS function keyPressSimulate keyCode
  • 更新实体框架 4.1 代码优先中的外键关联

    我得出的结论是 我应该在我的代码优先设计中定义独立关联和外键关联 例如 public class Book public int ID get set public int AuthorID get set ForeignKey Autho
  • 如何适当地从 java.lang.Process 关闭 std-streams?

    这个问题是关于java lang Process及其对 stdin stdout 和 stderr 的处理 我们的项目中有一个类是对org apache commons io IOUtils 我们有一个安静的新方法来关闭进程对象的标准流吗
  • 更新 SQL 列

    所以我有一个有6列的表 每列对应于某种产品类型 每列都有一个数字 该数字对应于人们选择该产品类型的次数 A B C D E F 0 0 0 0 0 0 所以如果用户选择类型A 然后我想更新列A的号码来自0 to 1 所以这是我写的 SQL
  • 我如何能够在没有 #include 的情况下使用字符串?

    STL参考中给出了字符串类位于字符串头中 那么在不包含头的情况下 以下程序如何运行而不出错 include
  • 如何在字符串中的特定模式之后提取特定文本

    我有一些 Bash 代码 计划从字符串中提取 ID 我已尝试使用代码来查找模式 ID 之后的 ID 它正在提取 ID 值 但之后它会提取 ID 后的剩余文本 我只想提取该行中的 ID 而不提取剩余的文本 我试过下面的代码 string ID
  • 禁用分组单选操作按钮中的单个单选选择

    我有一个下面闪亮的代码 我试图禁用分组单选按钮中的单个单选按钮选择 我可以使用禁用完整的单选按钮shinyjs disable 功能 但是 无法禁用单一选择 library shiny library shinyjs library shi
  • 为什么在构造函数中使用this关键字

    比较代码1和代码2 哪一个是正确的 function Rectangle height width this height height this width width this calcArea function why use thi
  • 用于迭代变化列表的 Python 习惯用法

    python 中是否有更好的 更明显 惯用的 方法来编写等效的 index 0 while index lt len some list do some stuff some list index may have many side ef