使用Python从索引列表中删除多个元素

pro*_*eek 5 python collections list

我有一个值列表和一个索引列表,我需要删除索引指向的元素.

这是我的解决方案,但我不喜欢实现,因为它需要导入包,当值包含maxint时不起作用,并多次迭代值.

def remove_abnormalities(values, indices):
    v = list(values)
    for i in indices:
        v[i] = sys.maxint
    return filter(lambda i: i != sys.maxint, v)
Run Code Online (Sandbox Code Playgroud)

更好的解决方案?

orl*_*rlp 8

这应该工作:

def remove_abnormalities(values, indices):
    return [val for i, val in enumerate(values) if i not in indices]
Run Code Online (Sandbox Code Playgroud)

此外indices,如果索引数量很大,您可以在过滤之前转换为集合,以获得更高的性能.