在python中偷看一堆

时间:2009-11-17 18:57:08

标签: python heap peek

在heapq堆中创建的python堆中偷看的官方方法是什么?现在我有

def heappeak(heap):
  smallest = heappop(heap)
  heappush(heap, smallest)
  return smallest

可以说,不是很好。我是否可以始终假设heap[0]是堆顶部并使用它?或者这会假设太多的底层实现?

2 个答案:

答案 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()。