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