特定のリストの n 個の最高値を取得する最良の方法は何ですか? の長さに比べて n がかなり小さい場合、alist
以下よりも効率的なものはありますか?
alist.sort()
return alist[0:n]
heapq
モジュールを使用します:
import heapq
return heapq.nlargest(n, l)
比較的少数のn
要素を探している場合は、ヒープ キューを使用する方がフル ソートよりも効率的です。がn
大きいsorted(l)[-n:]
ほど効率的です。実装はこれらの条件をテストし、が と等しいかそれより大きいと判断できる場合はheapq.nlargest()
using に切り替えます。sorted()
n
len(l)
heapq
モジュールはリストをインプレースで変更することに注意してください(heapq.heapify()
がリストで呼び出されます)。