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?