如何使用`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]