objectif
Obtenir les k plus grands/petits sans trier toute la liste.
code minimal
import heapq
data = [5, 1, 9, 2, 7, 3]
print(heapq.nlargest(2, data) == [9, 7]) # attendu: True
utilisation
import heapq
data = [5,1,9,2,7,3]
print(heapq.nsmallest(3, data) == [1,2,3])
variante(s) utile(s)
import heapq
data = [(3, "c"), (1, "a"), (2, "b")]
print(heapq.nlargest(1, data)[0][1] == "c")
notes
- Plus efficace que sorted(…)[:k] pour de grands ensembles.
- Accepte une clé via key=.