Co to jest moduł stertyq Pythona?

próbowałem„heapq” i doszedłem do wniosku, że moje oczekiwania różnią się od tego, co widzę na ekranie. Potrzebuję kogoś, kto wyjaśni, jak to działa i gdzie może być przydatny.

Z książkiModuł tygodnia Pythona pod akapitem2.2 Sortowanie To jest napisane

Jeśli chcesz zachować posortowaną listę podczas dodawania i usuwania wartości, sprawdź stapq. Używając funkcji w heapq do dodawania lub usuwania elementów z listy, możesz zachować porządek sortowania listy z niskim narzutem.

Oto co robię i dostaję.

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?

Tak więc, jak widzisz, lista „sterty” nie jest w ogóle sortowana, tym bardziej dodajesz i usuwasz elementy, tym bardziej staje się to zaśmiecone. Przesunięte wartości zajmują niewytłumaczalne pozycje. Co się dzieje?

questionAnswers(3)

yourAnswerToTheQuestion