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