This question already has answers here:
Filter max 20 values from a list of integers
(2个答案)
6年前关闭。
获得给定列表n个最大值的最佳方法是什么?如果我们所处的情况是,与
如果要查找相对较少的
注意,
(2个答案)
6年前关闭。
获得给定列表n个最大值的最佳方法是什么?如果我们所处的情况是,与
alist
的长度相比,n相当小,那么是否有比以下更有效的方法:alist.sort()
return alist[0:n]
最佳答案
使用heapq
module:
import heapq
return heapq.nlargest(n, l)
如果要查找相对较少的
n
元素,那么使用堆队列比完全排序更有效率。如果n
更大,sorted(l)[-n:]
效率更高。heapq.nlargest()
实现确实测试了这些条件,如果可以确定sorted()
等于或大于n
,则将切换到使用len(l)
。注意,
heapq
模块将就地修改列表(heapq.heapify()
在列表中调用)。关于python - Python中列表的n个最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15116236/
10-11 02:26