拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 PythonHeapPushPop不弹出最小元素

PythonHeapPushPop不弹出最小元素

白鹭 - 2022-03-09 1982 0 0

我觉得我一定是误解了 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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *