python - 删除多个列表元素,知道它们在 python 中的索引
问题描述
从只知道项目索引的列表中删除项目的最佳和最pythonic的方法是什么?
my_list = ['zero', 'one', 'two', 'three', 'four']
my_removal_indices = [0, 2, 4]
# what to do
my_list = ['one', 'three']
请注意,类似:
my_list = [item for item in my_list if my_list.index(item) in my_removal_indices]
不起作用,因为其中的元素my_list
可能不是唯一的。此外,当然,当只是迭代时,my_list
变化的索引。有没有比创建一个新的空列表并将所有想要的项目存储在那里并将其设置为my_list
之后更好的方法?
谢谢!
解决方案
您可以使用enumerate
相应的索引来遍历您的列表。然后根据您的删除列表检查这些索引。
>>> [val for idx, val in enumerate(my_list) if idx not in my_removal_indices]
['one', 'three']
如果索引列表很长,为了性能也可以切换到aset
来加快in
检查
my_removal_indices = {0, 2, 4}
>>> [val for idx, val in enumerate(my_list) if idx not in my_removal_indices]
['one', 'three']
推荐阅读
- android - 如何从 getter 写入片段中的 listView?
- kubernetes - 需要在不删除已经运行的 pod 的情况下升级 helm chart
- c# - 安装应用后指定的元数据路径无效
- php - 如何使用 PHP file_get_contents 重写 .txt 文件循环中的 1 个特定行
- reactjs - reactjs Route Not Found 请求的 URL
- three.js - 有没有可能在threejs中使用GIF动画?
- javascript - @babel/plugin-transform-modules-amd 的行为不符合预期
- gremlin - 使用带有 unname 和密码的 gremlin-python 连接到远程 gremlin-server
- c# - 是否可以指定条件输出绑定?
- php - 使用php在文本框中显示sql变量