美文网首页
Python3 - 序列合并后排序迭代

Python3 - 序列合并后排序迭代

作者: 惑也 | 来源:发表于2018-12-22 14:36 被阅读19次

    问题

    一系列排序序列,将它们合并后得到一个排序序列,并在上面迭代遍历。

    解决方案

    heapq.merge() 函数可以解决这个问题。比如:

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

    讨论

    heapq.merge() 函数的可迭代特性,意味着它不会立马读取所有序列,可以在非常长的序列中使用它,而不会有太大的开销。

    需要强调的是, heapq.merge() 需要所有输入序列必须是排过序的,它并不会预先读取所有数据到堆栈中或者预先排序,也不会对输入做任何的排序检测。 它仅仅是检查所有序列的开始部分并返回索引最小的元素,这个过程一直会持续直到所有输入序列中的元素都被遍历完。

    相关文章

      网友评论

          本文标题:Python3 - 序列合并后排序迭代

          本文链接:https://www.haomeiwen.com/subject/psuikqtx.html