我正在做一个模拟实验,并试图让我的代码尽可能高效。一方面,我有一个最小堆优先级队列,我使用heapq
模块实现了它。
在整个模拟过程中,我必须用最小的键弹出所有元素。这样做的直接方法是:
elements = []
k1, v1 = heapq.heappop(heap)
elements.append((k1,v1))
k2, v2 = heap[0] #looks at the smallest item without popping
while(k1 == k2):
k1, v1 = heapq.heappop(heap)
elements.append((k1,v1))
k2, v2 = heap[0]
return elements