登录
  • #刷题

一个‌‌‍‍‌‍‍‌‍‍‌‍‌‍‍‍‍‍‍‍‌‌‍‌‍‍‍‍‍‌‍‍简单的关于堆的示例代码,不知道为什么竟是这个结果。。。。。。。。。。。。

ATPtennis
180
6
import heapq

heap = [(2.7, 1), (1.7, 2), (0.7, 3), (0.3, 4), (1.3, 5)]

output = [][br]
for _ in range(2):

output.append(heapq.heappop(heap)[1])

print(output)

这段代码输出结果是[1, 3]。我是上网查了半天,说是heappop崩出来的是最小的值,那么不应该是0.3 和 0.4那两对元组吗?

所以最后结果应该是[3, 4]啊。这个1是从哪来的?

就是这个heap里怎么算最小值,都没有(2.7, 1)这个元组什么事啊。按第一个排取最小,也轮不到2.7;按第二个排取最小,那最后应该是2.7和1.7这两对元组的。

求解惑
6条回复
热度排序

发表回复