libreria - Echando un vistazo en un montón en python
max heap python (2)
¿Cuál es la forma oficial de echar un vistazo en un montón de python creado por las librerías heapq? Ahora tengo
def heappeak(heap):
smallest = heappop(heap)
heappush(heap, smallest)
return smallest
lo que es discutible, no muy agradable. ¿Puedo asumir siempre que el heap[0]
es la parte superior del montón y usar eso? ¿O eso supondría demasiado de la implementación subyacente?
Sí, puede hacer esta suposición, porque se encuentra en la documentation :
Los montones son matrices para las cuales el
heap[k] <= heap[2*k+1]
y elheap[k] <= heap[2*k+2]
para todos los k , contando los elementos desde cero. En aras de la comparación, los elementos no existentes se consideran infinitos. La propiedad interesante de un montón es que elheap[0]
es siempre su elemento más pequeño.
(Y esa es probablemente la razón por la que no hay una función de peek
: no hay necesidad de hacerlo).
Si está utilizando Python 2.4 o más reciente, también puede usar heapq.nsmallest ().