[英]how to use `heapq.merge`?
Here's the snippet I've been trying:这是我一直在尝试的片段:
>>> 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]
I was expecting [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
because of reverse=True
.我期待
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
因为reverse=True
。 What am I doing wrong?我究竟做错了什么?
Thanks to @Thierry Lathuille 's comment.感谢@Thierry Lathuille的评论。 I figured it out.
我想到了。 Its a very round about way though.
虽然它是一个非常圆的方式。
>>> 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]
For merging 2 lists sorted in ascending order but the output should be in descending order, this seems to be much simpler:对于合并按升序排序但输出应按降序排列的 2 个列表,这似乎要简单得多:
>>> sorted(L1 + L2, reverse=True)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.