是否可以同时从列表中删除多个元素?如果我想删除索引0和2的元素,然后尝试执行类似del somelist[0]的操作del somelist[2],则第二条语句实际上将删除somelist[3]。
del somelist[0]
del somelist[2]
somelist[3]
我想我总是可以先删除编号较高的元素,但我希望有更好的方法。
查看更多
可能不是此问题的最佳解决方案:
indices = 0, 2 somelist = [i for j, i in enumerate(somelist) if j not in indices]
几乎,仅当您删除整个列表时。它是len(indices)* len(somelist)。它还会创建一个副本,可能不需要,也可能不需要
如果要检查列表中的值,则为。“ in”运算符适用于列表的值,而适用于字典键。如果我写错了,请指出提示/参考
我选择元组作为索引的原因仅仅是为了简化记录。对于给定O(n)的set()来说,这将是一个完美的工作
这根本不是从某列表中删除项目,而是创建一个全新的列表。如果有什么东西保留了对原始列表的引用,它将仍然包含所有项目。
@SilentGhost不需要进行枚举。怎么样:
somelist = [ lst[i] for i in xrange(len(lst)) if i not in set(indices) ]
?