Подтвердить что ты не робот

Подглядывание в куче в python

Каков официальный способ заглянуть в кучу python, созданную библиотеками heapq? Прямо сейчас у меня

def heappeak(heap):
  smallest = heappop(heap)
  heappush(heap, smallest)
  return smallest

который, возможно, не очень приятный. Могу ли я всегда считать, что heap[0] является вершиной кучи и использует это? Или это будет слишком много из основной реализации?

4b9b3361

Ответ 1

Да, вы можете сделать это предположение, потому что оно указано в документации:

Кучи - это массивы, для которых heap[k] <= heap[2*k+1] и heap[k] <= heap[2*k+2] для всех k, считая элементов из нуля. Во имя сравнение, несуществующие элементы считается бесконечным. The интересным свойством кучи является то, что heap[0] всегда самый маленький элемент.

(И, вероятно, причина в том, что нет функции peek: в этом нет необходимости.)

Ответ 2

Если вы используете Python 2.4 или новее, вы также можете использовать heapq.nsmallest().