¿Qué es el módulo heapq de Python?
Lo intenté"heapq" y llegué a la conclusión de que mis expectativas difieren de lo que veo en la pantalla. Necesito a alguien que explique cómo funciona y dónde puede ser útil.
Del libroMódulo de Python de la semana bajo el párrafo2.2 Clasificación está escrito
Si necesita mantener una lista ordenada a medida que agrega y elimina valores, revise heapq. Al utilizar las funciones de heapq para agregar o eliminar elementos de una lista, puede mantener el orden de la lista con una sobrecarga baja.
Esto es lo que hago y obtengo.
import heapq
heap = []
for i in range(10):
heap.append(i)
heap
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
heapq.heapify(heap)
heapq.heappush(heap, 10)
heap
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
heapq.heappop(heap)
0
heap
[1, 3, 2, 7, 4, 5, 6, 10, 8, 9] <<< Why the list does not remain sorted?
heapq.heappushpop(heap, 11)
1
heap
[2, 3, 5, 7, 4, 11, 6, 10, 8, 9] <<< Why is 11 put between 4 and 6?
Entonces, cuando vea que la lista de "montones" no está ordenada en absoluto, de hecho, cuanto más agregue y elimine los elementos, más desordenados se volverán. Los valores empujados toman posiciones inexplicables. Que esta pasando?