все Python 3heapqфункция
heapq.heappushpop()
операции
Вставляет элемент и сразу извлекает минимум — порядок обратный heapreplace(). Если новый элемент меньше всех, он же и вернётся, куча не изменится.
Синтаксис
heapq.heappushpop(heap, item)
Один просев дерева вместо двух, поэтому пара heappush() плюс heappop() всегда проигрывает: обе операции O(log n), но здесь работы вдвое меньше. В отличие от heapreplace(), спокойно переживает пустую кучу — просто вернёт то, что вы передали. Отсюда идиома «топ-k»: держите кучу ровно из k элементов и лейте поток через heappushpop().
Примеры
import heapq
h = [3, 5, 7]
heapq.heappushpop(h, 1) # → 1 (1 < min, сразу вернули)
heapq.heappushpop(h, 9) # → 3 (вставили 9, извлекли 3)
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности