python - 删除多个列表元素,知道它们在 python 中的索引

标签 python list

从只知道项目索引的列表中删除项目的最佳和最 Python 的方法是什么?

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']

如果索引列表很长,为了性能也可以切换到一个set来加快in检查

my_removal_indices = {0, 2, 4}
>>> [val for idx, val in enumerate(my_list) if idx not in my_removal_indices]
['one', 'three']

关于python - 删除多个列表元素,知道它们在 python 中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64352779/

相关文章:

python - 在Python中获取最接近1的字典键的最快方法

c++ - 创建 "relative"优先级队列的算法? (c/c++)

python 在列表中查找不同的元素

list - 将函数列表应用于普通 lisp 中的列表

C# : Store Generic List<> Objects to File Stream

python - 在 AND 和 OR 处拆分字符串,保留分隔符

python - 这是在 Pandas/Python 中更改日期的正确方法吗?

python - Python 的 map 和 sum 中的 str

python - ManagedIdentityCredential 身份验证不可用,未找到托管身份端点

Python 嵌套 for 循环行为