import heapq heapq.nsmallest(n, iterable, key=None)
n
- int
, количество наименьших элементов,iterable
- итерируемая последовательность,key=None
- функцию с одним аргументом.список
из n
элементов.Функция nsmallest()
модуля heapq
возвращает список с n
наименьшими элементами из набора данных, определенного с помощью итерируемой последовательности iterable
.
Аргумент key
, если он указан, определяет функцию с одним аргументом, которая используется для извлечения ключа сравнения из каждого элемента в итерируемой последовательности iterable
, например key=str.lower
. Значением по умолчанию является None
, что означает сравнение элементов напрямую.
Функция nsmallest()
эквивалентна вызову sorted(iterable, key=key)[:n]
.
Работает лучше для маленьких значений n
. Для больших значений более эффективно использовать функцию sorted()
. Также, когда n=1
, более эффективно использовать встроенную функцию min()
.
Если требуется повторное использование функции heapq.nsmallest()
, рассмотрите возможность преобразования последовательности iterable
в реальную кучу.
>>> import heapq >>> seq = [100, 2, 400, 500, 400] >>> heapq.nsmallest(2, seq) # [2, 100] >>> heapq.nsmallest(2, enumerate(seq), key=lambda x: x[1]) # [(1, 2), (0, 100)]