O que é o módulo heapq do Python?

eu tentei"heapq" e cheguei à conclusão de que minhas expectativas diferem do que vejo na tela. Eu preciso de alguém para explicar como funciona e onde pode ser útil.

Do livroMódulo Python da semana sob o parágrafo2.2 Ordenação está escrito

Se você precisar manter uma lista classificada ao adicionar e remover valores, confira o heapq. Usando as funções em heapq para adicionar ou remover itens de uma lista, você pode manter a ordem de classificação da lista com pouca sobrecarga.

Aqui está o que eu faço e recebo.

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?

Então, como você vê, a lista "heap" não é ordenada, na verdade, quanto mais você adiciona e remove os itens, mais confuso fica. Valores enviados levam a posições inexplicáveis. O que está acontecendo?

questionAnswers(3)

yourAnswerToTheQuestion