在python 2.7中从数字列表中删除一组索引的最有效方法是什么?
问题内容:
因此,我想知道如何使用Python 2.7最有效地获取用于表示像这样的索引的值的列表:(但长度不能超过250,000+)
indices = [2, 4, 5]
并从较大的列表中删除该索引列表,如下所示:(3,000,000+项)
numbers = [2, 6, 12, 20, 24, 40, 42, 51]
得到这样的结果:
[2, 6, 20, 42, 51]
我在寻找一种有效的解决方案,而不是其他任何事情。我知道有很多方法可以做到这一点,但这不是我的问题。效率是。同样,此操作将必须执行多次,并且列表都将成倍减小。我没有方程式来表示随着时间的推移它们将变小多少。
编辑:
数字必须始终保持在列表中排序,或者在删除索引后返回到排序状态。称为索引的列表可以排序也可以不排序。它甚至不必在列表中。
问题答案:
我怀疑在索引之间取整片可能比列表理解要快
def remove_indices(numbers, indices):
result = []
i=0
for j in sorted(indices):
result += numbers[i:j]
i = j+1
result += numbers[i:]
return result