我觉得我一定是误解了 heappushpop 因为我无法弄清楚为什么会发生这种情况。
sequence = [2, 6, 4, 5, 8]
result = []
x = [3, -1]
result.append(heapq.heappushpop(x, sequence[0]))
这不应该将 2 推入堆 x 并弹出 -1 吗?我正在推动和弹出 2。
uj5u.com热心网友回复:
发生这种情况是因为您开始时没有使用最小堆。
x
是不最小堆。heapq
当您传递给它的串列不是堆时,您不能期望在堆上作业的函式给出合理的结果。
所以首先做:
heapq.heapify(x)
测验:
import heapq
x = [3, -1]
heapq.heapify(x)
print(heapq.heappushpop(x, 2)) # outputs -1
print(x) # outputs [2, 3]
0 评论