- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个定义为列表列表的简单堆。我使用 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/
我有一个定义为列表列表的简单堆。我使用 heapq 模块中的 heapop 来提取具有最小键的列表(我了解到它隐式地是内部列表的第一个元素)。但在以下情况下,弹出操作似乎给出了异常结果。 谁能解释一下
我试图在我的程序中使用 Python 模块 heapq,但我在使用 heapq.heappop() 时遇到了一个奇怪的问题。该函数似乎没有返回堆中的最小元素。看看下面的代码: Python 2.7.1
对于列表,heappop 会弹出最前面的元素。从列表的前面删除一个元素的时间复杂度为 O(n)。我错过了什么吗? 最佳答案 heappop() 重新排列列表中的 log(n) 元素,这样它就不必移动每
在 heapq 的文档中,它写道 heapq.heappushpop(heap, item) Push item on the heap, then pop and return the smalle
我是一名优秀的程序员,十分优秀!