Python:根据另一个列表中的元素按索引从列表中删除元素

时间:2021-03-24 04:15:01

标签: python list

所以我有一个清单

a_list = [0,3,4,7,9,11,15]

和异常值列表

outliers = [0,3,4]

outliers 是需要从 a_list 中删除的索引列表

所以在这种情况下,从 a_list 中删除索引 0、3、4 中的元素。结果应该是:

remove these = [0,7,9]
a_list = [0,3,4,11,15]

如果我使用 del 方法,索引会改变,所以一旦我删除第 0 个索引,我仍然会删除第 3 个索引,但删除 9 和第 4 个索引将删除 15。

如何使用单独列表中指定的索引从 a_list 中删除项目?

2 个答案:

答案 0 :(得分:2)

将索引与 outliers 列表进行比较。如果 indexoutliers 匹配,则跳过它。

print([x for i, x in enumerate(a_list) if i not in outliers])

如果异常值包含重复元素,最好使用 set(outliers)

答案 1 :(得分:-1)

这是基于其他人评论的真正快速实施。

a_list = [0,3,4,7,9,11,15]
outliers = [0,3,4]
outliers.reverse()
for i in outliers:
    del a_list[i]
print(a_list)

在正常迭代和删除之前只需调用 outliers.reverse()

相关问题