This question already has answers here:
Filter max 20 values from a list of integers
(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