在heapq堆中创建的python堆中偷看的官方方法是什么?现在我有
def heappeak(heap):
smallest = heappop(heap)
heappush(heap, smallest)
return smallest
可以说,不是很好。我是否可以始终假设heap[0]
是堆顶部并使用它?或者这会假设太多的底层实现?
答案 0 :(得分:34)
是的,你可以做出这个假设,因为它在documentation:
中有说明堆是所有 k 的
heap[k] <= heap[2*k+1]
和heap[k] <= heap[2*k+2]
的数组,计数 来自零的元素。为了 比较,不存在的元素是 被认为是无限的。的的 堆的有趣属性是heap[0]
总是最小的 元件。强>
(这可能是没有peek
功能的原因:没有必要。)
答案 1 :(得分:5)
如果你使用的是Python 2.4或更高版本,你也可以使用heapq.nsmallest()。