Python Glossary English

все Python 3heapqфункция

heapq.heappush()

операции

Добавляет элемент в кучу, сохраняя её инвариант. Куча — обычный список, минимум всегда лежит в heap[0]. Сложность O(log n).

Синтаксис

heapq.heappush(heap, item)

Куча — обычный список, поэтому инвариант легко сломать по неосторожности: append(), insert() или присваивание в середину мимо heapq делают все последующие heappop бессмысленными. В очереди с приоритетом кладут кортежи (приоритет, объект), но при равных приоритетах Python начнёт сравнивать вторые элементы и упадёт с TypeError на несравнимых объектах — спасает возрастающий счётчик вторым полем кортежа. Если сразу после вставки нужно извлечение, есть heappushpop: одна перестройка вместо двух.

Примеры

import heapq
h = []
heapq.heappush(h, 3)
heapq.heappush(h, 1)
heapq.heappush(h, 2)
h[0] # → 1 (минимум всегда первый)

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности