python - heapq.merge() 迭代器遍历的项比列表中的多
问题描述
遵循 heapq.merge() 的文档- 我得到了非常奇怪的结果,并且找不到我做错了什么......设置如下:
- 我正在使用 heapq.merge() 对多个列表进行排序。用2~8个列表迭代器测试,结果完全一样。列表包含 10K ~ 25K 项。
- 列表元素本身实现了列表排序所需的一切(__ lt__()、__ eq__()、...)。
- 我测试了这些特殊的排序方法是否被调用,无论是在对列表本身进行排序时,还是在调用 heapq.merge() 方法时。
- 我确保列表不包含任何重复条目。甚至没有交叉列表。使用我附加到每个元素的简单运行编号,并在比较中使用。
输出:在遍历 2 个每个包含 25K 项的列表时,我得到了 100K 的结果。投入的金额翻倍。
我相信我遵循了这里的所有要求。我应该在将列表输入 heapq.merge 之前对列表进行堆放吗?文档中没有这样说,也不清楚应该/是否应该这样做。
有什么线索吗?
解决方案
好的,只是为了澄清这里发生的事情:我的错误是(不小心......)遍历列表的迭代器,而不是列表本身。奇怪的是,函数/编译器没有拒绝它!一旦我自己传递了列表,该功能就可以正常工作。
推荐阅读
- java - 有没有办法在输出的末尾添加一个换行符?
- copy-paste - 从 Excel 粘贴到 Outlook 时货币格式发生变化
- python - 根据另一个 dict 值对 dict 进行排序
- r - R - 在循环内创建/子集数据帧或应用系列
- python - /getGiftFromFaucet/ 处的 ValueError 视图 contract.views.getGiftFromFaucet 未返回 HttpResponse 对象。它返回 None 而不是
- google-cloud-platform - 如何恢复默认服务帐户
- data-binding - SAP UI5:将 JSON 模型数据绑定到详细视图
- node.js - 在反应中使用 fetch 和 useEffect 钩子向 api 发送删除请求
- google-chrome-headless - 用于 PDF 制作的 Chromium 无头浏览器无法正常工作
- jquery - 检查元素文本是否为 `&ndash`