все Python 3heapqпонятие
heapq
модуль
Двоичная куча поверх обычного списка: быстро достать наименьший элемент, очередь с приоритетом, k наибольших.
Синтаксис
import heapq
heapq нужен, когда снова и снова берут минимум из меняющегося набора: очередь задач, алгоритм Дейкстры, слияние отсортированных потоков. Куча — это обычный список, а функции модуля поддерживают её порядок; сам список при этом не отсортирован, отсортирован только nums[0]. Для потоков между потоками есть queue.PriorityQueue. Куча здесь минимальная: максимальную раньше получали, складывая числа со знаком минус.
Примеры
import heapq
nums = [5, 1, 8, 3]
heapq.heapify(nums)
heapq.heappush(nums, 0)
print(heapq.heappop(nums), heapq.heappop(nums)) # → 0 1
print(heapq.nlargest(2, [5, 1, 8, 3])) # → [8, 5]
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности