将排序序列的集合合并成一个排序序列

您有一个排序序列的集合,并且想要遍历所有合并在一起的排序序列。
先看如下示例,了解实际需求:

>>> import heapq
>>> a = [1, 4, 7, 10]
>>> b = [2, 5, 6, 11]
>>> for c in heapq.merge(a, b):
        print(c)

...
1
2
4
5
6
7
10
11

值得注意的是,heapq.merge要求所有的输入序列已排序。特别是,它不会首先将所有数据读入堆中或进行任何初步排序。 它也不对输入进行任何形式的验证,以检查输入是否满足排序要求。 取而代之的是,它仅从每个输入序列的开头检查项目集,找到的最小项。 然后读取所选序列中的新项目,然后重复该过程,直到所有输入序列都被完全消耗为止。
类似于sorted(itertools.chain(* iterables)),但返回一个iterable,不会一次将数据全部拉入内存,并假定每个输入流都已排序(最小到最大)。

posted @ 2019-11-09 16:28  Jeffrey_Yang  阅读(267)  评论(0编辑  收藏  举报