最佳答案
我尝试了 “堆”,得出的结论是,我的期望与我在屏幕上看到的不同。我需要有人解释一下它是怎么工作的,在哪里能派上用场。
从书 每周 Python 模块下段 2.2分类它是写
如果在添加和删除值时需要维护排序列表, 通过使用 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?
因此,正如您所看到的,“堆”列表根本没有排序,实际上,添加和删除的项目越多,它就变得越混乱。被推动的价值观采取无法解释的立场。 发生什么事了?