我无法编辑或排序列表。我怎样才能获得该索引?
答案 0 :(得分:6)
heapq模块提供nlargest函数,可以有效地查找列表中的n个最大元素:
>>> from heapq import nlargest
>>> items = [100, 300, 200, 400]
>>> indexes = [0, 1, 2, 3]
>>> nlargest(2, indexes, key=lambda i: items[i])
[3, 1]
答案 1 :(得分:0)
你所得到的已经是O(n)的复杂性(max
是O(n),index()
,IIRC)。因此,虽然你可能技术上只是删除最大的,如果它不合适并再试一次,你就开始以big-O的形式进入bubblesort领域。列表中通常有多少项?
一个选项是QuickSelect,它基本上是一个简化的QuickSort,但老实说,只是预先对列表进行排序并不会比你已经慢得多。
如果您不想更改原始列表的顺序,可以使用sorted()函数返回新的排序列表。