Python 3.14+heapqфункция
heapq.heappushpop_max()
операции
Добавляет элемент в max-кучу и сразу извлекает наибольший — быстрее, чем heappush_max() и heappop_max() по отдельности.
Синтаксис
heapq.heappushpop_max(heap, item) -> item
Появилась в Python 3.14; раньше max-кучу имитировали, кладя в обычную кучу отрицательные числа (-x) и меняя знак при извлечении, а для строк и объектов этот трюк не работал вовсе. Порядок «сначала положить, потом достать»: если новый элемент больше корня, он же и вернётся, а куча не изменится. Отсюда отличие от heapreplace_max(), которая сначала достаёт старый корень и потому может вернуть значение меньше нового.
Примеры
import heapq
h = [5, 3]
print(heapq.heappushpop_max(h, 9), h) # → 9 [5, 3]
print(heapq.heappushpop_max(h, 1), h) # → 5 [3, 1]
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности