El mirar a escondidas en un montón en pitón
Pregunta
¿Cuál es la manera oficial de mirar a escondidas en un montón Python como creado por las librerías heapq? Ahora mismo tengo
def heappeak(heap):
smallest = heappop(heap)
heappush(heap, smallest)
return smallest
que es posiblemente, no es muy agradable. ¿Puedo suponer que siempre heap[0]
es la parte superior de la pila y usar eso? O habría que suponer demasiado de la implementación subyacente?
Solución
Sí, usted puede hacer esta suposición, ya que se define en la documentación rel="noreferrer"> :
Montones son matrices para los que
heap[k] <= heap[2*k+1]
yheap[k] <= heap[2*k+2]
para todos k , contando elementos de cero. Por el bien de comparación, elementos no existentes son considera que es infinita. La interesante propiedad de un montón es queheap[0]
es siempre la más pequeña elemento.
(Y eso es probablemente la razón no hay ninguna función peek
:. No hay necesidad de ello)
Otros consejos
Si estás usando Python 2.4 o posterior, también se puede utilizar heapq.nsmallest ().