Сообщить об ошибке.

Функция heapreplace() модуля heapq в Python

Получить и удалить элемент из кучи, а потом добавить элемент

Синтаксис:

import heapq

heapq.heapreplace(heap, item)

Параметры:

  • heap - список с кучей,
  • item - добавляемый элемент.

Возвращаемое значение:

  • наименьший элемент из кучи.

Описание:

Функция heapreplace() модуля heapq сначала удаляет и возвращает наименьший элемент из кучи heap, а потом добавляет новый элемент item. Размер кучи heap не меняется. Если куча пуста, поднимается исключение IndexError.

Эта одношаговая операция более эффективна, чем вызов heapq.heappop(), за которой следует heapq.heappush() и может быть более подходящей при использовании кучи фиксированного размера. Комбинация pop/push всегда возвращает элемент из кучи и заменяет его на item.

Возвращаемое значение может быть больше, чем добавленный элемент. Если это нежелательно, рассмотрите возможность использования функции heapq.heappushpop(). Его комбинация push/pop возвращает меньшее из двух значений, оставляя большее значение в куче.

Примеры использования:

>>> import heapq
>>> h = [(3, 'three'), (1, 'one'), (7, 'seven'), (5, 'five'), (9, 'nine')]
>>> heapq.heapify(h)
>>> heapq.heapreplace(h, (2, 'two'))
# (1, 'one')
>>> heapq.heapreplace(h, (0, 'zero'))
# (2, 'two')
>>> h
[(0, 'zero'), (3, 'three'), (7, 'seven'), (5, 'five'), (9, 'nine')]