所以我有一个清单
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 中删除项目?
答案 0 :(得分:2)
将索引与 outliers
列表进行比较。如果 index
与 outliers
匹配,则跳过它。
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()
。