您有一个排序序列的集合,并且想要遍历所有合并在一起的排序序列。
先看如下示例,了解实际需求:
>>> 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,不会一次将数据全部拉入内存,并假定每个输入流都已排序(最小到最大)。
原文地址:https://www.cnblogs.com/jeffrey-yang/p/11826553.html
时间: 2024-10-20 07:53:26