Что такое модуль heapq Python?
Я пытался"Heapq" и пришел к выводу, что мои ожидания отличаются от того, что я вижу на экране. Мне нужен кто-то, чтобы объяснить, как это работает и где это может быть полезно.
Из книгиМодуль Python недели в соответствии с пунктом2.2 Сортировка это написано
Если вам нужно поддерживать отсортированный список при добавлении и удалении значений, проверьте heapq. Используя функции из heapq для добавления или удаления элементов из списка, вы можете поддерживать порядок сортировки списка с минимальными издержками.
Вот что я делаю и получаю.
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?
Итак, как вы видите, список «кучи» вообще не отсортирован, фактически, чем больше вы добавляете и удаляете элементы, тем более загроможденными они становятся. Заданные значения занимают необъяснимые позиции. Что происходит?