Python 合并多个有序序列

# -*- coding: utf-8 -*-
def merge(*sequences):
    import heapq
    heap = [(seq[0],seq) for seq in sequences]
    heapq.heapify(heap)
    while heap:
        x, seq =  heapq.heappop(heap)
        yield seq.pop(0)
        if seq:
            heapq.heappush(heap, (seq[0], seq))


A = [[1,2,3,4], [5,6,8], [1,3,5,6,7,9]]
print list(merge(*A))
# >>> [1, 1, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8, 9]

 

posted on 2012-12-30 16:05  rongyilin  阅读(487)  评论(0编辑  收藏  举报

导航