问题标签 [heapq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 找到堆的平均最大值
这是条件
,所以当
我用这种方式尝试过,但是某些测试用例没有通过
,为什么要修复此代码,如果有更好的方法,请告诉我
python - heapq.merge() 如何与无限生成器一起工作?
我想了解heapq.merge()
无限生成器是如何工作的。考虑这个例子:
文档声明它不会一次将数据全部拉入内存。但是它是如何消耗每个无限生成器的呢?
algorithm - 如何改进此代码以查找数组的 k 个最大元素?
以下用于查找数组的 k 个最大元素的代码会导致 TLE 错误。如何优化它以使其运行得更快?
python - 提高python heapq的性能?
我希望提高从列表或数组中删除(弹出)最小项目的速度,同时还可以动态添加项目。最大项目数是固定的,所以我可以使用初始化的 numpy 数组,但到目前为止,我已经看到 heapq 的最佳性能。下面是我的实现是 Cython,下面的虚拟代码运行大约 0.7 秒。
在 Python 中有什么更好的可能吗?我简要地查看了排序列表(https://pypi.org/project/sortedcontainers/),但没有看到性能改进。通过切换到纯 C,我会看到明显的改进吗?在我的完整代码中,我只需要使用 heappush 和 heappop 操作。
编辑:澄清一下,在完整代码中,被推送到堆的值不是任何排序或预定义的顺序(因此使用堆来有效地找到最小值)。
list - 如何在python中将列表添加到heapq
如何直接将输入列表添加到堆中?,其中一些inbuild函数用于push,get min,extract min但是如何从堆中提取最大值。一些功能,如..
heapify(iterable) :- 此函数用于将 iterable 转换为堆数据结构。即按堆顺序。
heappush(heap, ele) :- 此函数用于将其参数中提到的元素插入堆中。调整顺序,从而保持堆结构。
heappop(heap) :- 此函数用于从堆中删除并返回最小元素。调整顺序,从而保持堆结构。
python-3.x - TypeError:在 python3 上的 heapq.heapop 上,但在 python2 中工作
我正在研究一种使用霍夫曼编码变体的基因组压缩算法。我在python2中有以下代码:
我正在尝试在 python3 中运行它。但是,我收到如下类型错误:
进入函数的输入是一个元组列表。说,
我很困惑,为什么它在 python 2 中工作但在 python3 中没有。我尝试调试程序并将其缩小到出现错误的行。模块 heapq 的功能如下:
在在线的 siftup 函数中进行一些迭代后出现错误
我尝试打印 and 的类型rightpos
,endpos
但我没有看到 str 的实例 - 每次它只是元组。使用python2,该函数成功执行,经过一些步骤后产生以下结果。
但是在python 3中,经过这么多步骤后我遇到了错误。
之后,出现错误:“TypeError:'tuple'和'str'的实例之间不支持'<'”
我寻求帮助,使这段代码在 python3 中工作。
python - 如何在不删除(弹出)它的情况下访问 heapq 中的顶部元素 python?
如何在不删除(弹出)它的情况下访问 heapq 中的顶部元素 python?
我只需要检查我的 heapq 顶部的元素而不弹出它。我怎样才能做到这一点。
python - 如何使用`heapq.merge`?
这是我一直在尝试的片段:
我期待[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
是因为reverse=True
。我究竟做错了什么?
python - 为什么 heapq.heapify 在将切片传递给列表时不会更改列表?
根据之前的回答
切片列表不会生成列表中对象的副本;它只是复制对它们的引用。
但是,当我运行以下命令时:
我明白了
最后的打印输出不会改变基础列表a
。但是,当将切片从 更改a[1:]
为a
(将其传递到heapify
)时,最后的打印输出会更改:
为什么?
python - 带有对象 heappush 的 Python 优先级队列不支持对象之间的“>”
在我尝试实现 A* 搜索的简单版本时,我试图将以下内容排入优先级队列:
- 优先级:从源到当前元素的启发式值和成本的总和
- 队列节点:具有数据成员点和成本的类队列节点的对象代码如下所示:'''s = queueNode(start, 0) q.put((s.dist + heuristics[s.pt[0]] [s.pt[1]],s)) # 使源单元入队'''
但是,它给出了以下错误: in _put heappush(self.queue, item) TypeError: '<' not supported between 'queueNode' and 'queueNode'
这是类队列节点的代码
更新: 我试图通过这两个实现使类具有可比性
第一的
第二
它仍然给出同样的错误
更新: 解决方法是使用列表对象而不是优先队列,并在每次输入新元素时对其进行排序。 代码 q=[] 追加 q.append ((heuristics[i][j],queueNodeObject)) 基于 成本排序