все Python 3heapqфункция
heapq.nsmallest()
выборка
Возвращает список из n наименьших элементов в порядке возрастания. Принимает key=, как sorted(). При n=1 дешевле min().
Синтаксис
heapq.nsmallest(n, iterable, key=None)
Куча на входе не нужна и не используется: функция принимает любое итерируемое и строит собственную внутреннюю структуру. Поэтому вызывать её на списке, который вы уже поддерживаете кучей, бессмысленно — минимум лежит в heap[0] и достаётся за O(1). key, как и в sorted(), считается по одному разу на элемент, так что дорогая функция ключа не пересчитывается при каждом сравнении.
Примеры
import heapq
data = [3, 1, 4, 1, 5, 9, 2, 6]
heapq.nsmallest(3, data) # → [1, 1, 2]
words = ['banana', 'kiwi', 'apple']
heapq.nsmallest(2, words, key=len) # → ['kiwi', 'apple']
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности