gpt4 book ai didi

python - heappop 的异常结果?

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:28 26 4
gpt4 key购买 nike

我有一个定义为列表列表的简单堆。我使用 heapq 模块中的 heapop 来提取具有最小键的列表(我了解到它隐式地是内部列表的第一个元素)。但在以下情况下,弹出操作似乎给出了异常结果。

谁能解释一下为什么?

heap=[[0, 0, 0], [inf, 1, 1], [inf, 2, 2], [5, 3, 3], [inf, 4, 4]]

heapq.heappop(heap)

[0, 0, 0]

heapq.heappop(heap)

[inf, 1, 1]

heapq.heappop(heap)

[5, 3, 3]

heapq.heappop(heap)

[inf, 2, 2]

heapq.heappop(heap)

[信息, 4, 4]

最佳答案

问题是您在不是堆的列表上使用 heapq。 documentation讨论了使用 heapify 命令,这确实有效:

>>> import heapq
>>> from numpy import inf
>>> heap=[[0, 0, 0], [inf, 1, 1], [inf, 2, 2], [5, 3, 3], [inf, 4, 4]]
>>> heapq.heapify(heap)
>>> heap
[[0, 0, 0], [5, 3, 3], [inf, 2, 2], [inf, 1, 1], [inf, 4, 4]]
>>> heapq.heappop(heap)
[0, 0, 0]
>>> heapq.heappop(heap)
[5, 3, 3]
>>> heapq.heappop(heap)
[inf, 1, 1]
>>> heapq.heappop(heap)
[inf, 2, 2]
>>> heapq.heappop(heap)
[inf, 4, 4]

关于python - heappop 的异常结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com