Python:从某些列表中获取最多N个元素

Alb*_*ert 35 python max

是否有某些功能可以从一些列表中返回N个最高元素?

即如果max(l)返回单个最高元素,那么.就像max(l, count=10)会给我一个10个最高数字的列表(如果l更小则更少).

或者什么是一个有效的简单方法来获得这些?(除了明显的规范实现;也没有涉及首先对整个列表进行排序的事情,因为与规范解决方案相比,这将是低效的.)

Gar*_*ees 54

heapq.nlargest:

>>> import heapq, random
>>> heapq.nlargest(3, (random.gauss(0, 1) for _ in xrange(100)))
[1.9730767232998481, 1.9326532289091407, 1.7762926716966254]
Run Code Online (Sandbox Code Playgroud)


Dav*_*ebb 6

执行此操作的标准库中的函数是 heapq.nlargest