来自https://www.tutorialspoint.com/heap-queue-or-heapq-in-python:
heappush - 这个函数在不改变当前堆的情况下向堆中添加一个元素。
如果当前堆没有改变,我们为什么不使用append()
列表方法呢?新元素的列表是否仅在heappop()
被调用时才被堆积?
我是否误解了“不改变当前堆”?或者是其他东西?
来自https://www.tutorialspoint.com/heap-queue-or-heapq-in-python:
heappush - 这个函数在不改变当前堆的情况下向堆中添加一个元素。
如果当前堆没有改变,我们为什么不使用append()
列表方法呢?新元素的列表是否仅在heappop()
被调用时才被堆积?
我是否误解了“不改变当前堆”?或者是其他东西?
这不是官方参考文档。所以它包含了作者想要写的东西。
如果您查阅官方Python 标准库参考资料,您会发现:
heapq.heappush(heap, item):将值项推送到堆上,保持堆不变。
这里发生的事情很清楚:新项目被添加到集合中,内部结构最终适应了二叉树:每个父节点的值小于或等于其任何子节点。
再看一遍教程后,我认为这意味着heappush
添加新元素而不改变堆上的其他元素,反对heappop
或heapreplace
删除当前较小的项目。