合并多个有序序列,再对整个有序序列进行迭代之heapq.merge()方法

<a href="https://docs.python.org/2/library/heapq.html">Heap queue algorithm-(heapq - 堆队列算法)官方链接</a>

  • 问题引入:
    • 一组有序序列,先合并产生一个新的有序序列,然后进行迭代。
  • heapq.merge()函数引入,有关heapq其它方法如下:
    • heappop
    • heapreplace
    • heapify
    • heappush
    • nsmallest
    • nlargest
    • merge
    • heappushp
  • 实现方法
>>> 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
    • 1.heapq.merge()在迭代操作中,对所提供的序列并不会做一次性操作,可以处理非常长的序列,开销小。
    • 2.heapq.merge()方法使用的前提是要求所有的输入序列是有序的。
    • 3.heapq.merge()方法不会预先做排序操作。
    • 4.heapq.merge()方法不会验证输入序列是否满足要求。
    • 5.heapq.merge()方法会检查每个序列的第一个元素,进行比较,将最小的那个放入新的序列中,然后再从之前的每个序列中选择下一个相比较小的元素。重复此操作,直至生成一个完整的新序列。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,292评论 19 139
  • 第五章 序列和协程 来源:Chapter 5: Sequences and Coroutines 译者:飞龙 协议...
    布客飞龙阅读 3,907评论 0 37
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,013评论 0 2
  • 不知何时,抑郁像迷雾一样,笼罩了内心,在无边的“森林”中,走失自己。 都市人的不易,为了生活不敢松一口气,久而久之...
    爱随喜阅读 2,849评论 0 0
  • 仪式是指对于某一特定意义的事情所发展出来的不同于其他的一种纪念。 1 过年的时候和宿舍的两个姑娘碰面,说道结婚这个...
    明媚小女子阅读 1,768评论 0 0