微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用`heapq.merge`?

如何解决如何使用`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,9,8]

由于[9,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)]
>>> M
[9,8,7,6,5,4,3,2,1,0]

要合并两个按升序排列的列表,但输出应按降序排列,这似乎要简单得多:

>>> sorted(L1 + L2,reverse=True)
[9,0]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。