Was ist das Heapq-Modul von Python?

Ich habe es versucht"heapq" und kam zu dem Schluss, dass meine Erwartungen sich von denen unterscheiden, die ich auf dem Bildschirm sehe. Ich brauche jemanden, der erklärt, wie es funktioniert und wo es nützlich sein kann.

Von dem BuchPython-Modul der Woche unter Absatz2.2 Sortieren es steht geschrieben

Wenn Sie beim Hinzufügen und Entfernen von Werten eine sortierte Liste pflegen müssen, lesen Sie heapq. Durch die Verwendung der Funktionen in heapq zum Hinzufügen oder Entfernen von Elementen zu einer Liste können Sie die Sortierreihenfolge der Liste mit geringem Overhead beibehalten.

Hier ist was ich tue und bekomme.

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?

Wie Sie also sehen, ist die "Heap" -Liste überhaupt nicht sortiert. Je mehr Sie Elemente hinzufügen und entfernen, desto überfüllter wird sie. Push-Werte nehmen unerklärliche Positionen ein. Was ist los?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage