python - 如何使用`heapq.merge`?
问题描述
这是我一直在尝试的片段:
>>> L1 = [i for i in range(10) if i % 2 == 0]
>>> L2 = [j for j in range(10) if j % 2]
>>> import heapq
>>> [k for k in heapq.merge(L1, L2)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [k for k in heapq.merge(L1, L2, reverse=True)]
[1, 3, 5, 7, 9, 0, 2, 4, 6, 8]
我期待[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
是因为reverse=True
。我究竟做错了什么?
解决方案
感谢@Thierry Lathuille的评论。我想到了。不过,它是一个非常圆的方式。
>>> L1 = [i for i in range(10) if i % 2 == 0]
>>> L2 = [j for j in range(10) if j % 2]
>>> M = [k for k in heapq.merge(sorted(L1, reverse=True), sorted(L2, reverse=True), reverse=True)]
>>> M
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
对于合并 2 个按升序排序但输出应按降序排列的列表,这似乎要简单得多:
>>> sorted(L1 + L2, reverse=True)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
推荐阅读
- terraform - 我可以遍历 OPA 中对象的键和值以验证它们是否符合某种格式(CamelCase)
- java - java - 如何打包将jar文件分发到另一台计算机时将自动工作的java库?
- python - 如何使用 Python 脚本识别 abaqus 程序集中的节点集名称?
- angular - Angular 8 应用程序在 IE11 中不起作用,但在 Edge 中它工作正常,如何修复它,最近我将我的应用程序从 Angular 7 迁移到 8
- java - 在 Maven 依赖规范中包装 groupId 值
- javascript - javaScript startsWith 方法给出错误
- ios - 安全地更改 NSLayoutConstraint 常量值
- python-3.x - 使用 cx_Oracle 查询 Oracle DB 时,日语字符显示为问号
- sql - 以数组形式返回 SQL
- sql - 使用 time_bucket 的慢 TimescaleDB 查询