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