python实现把两个排好序的列表合并成一个排好序的列表

一:方法1
#将两个排好序的列表合并成一个排好序的列表
def merge_list(a,b):
    if not a:
        return b
    if not b:
        return a
    a_index = b_index = 0
    ret = list()
    while a_index < len(a) and b_index < len(b):
        if a[a_index] <= b[b_index]:
            ret.append(a[a_index])
            a_index += 1
        else:
            ret.append(b[b_index])
            b_index += 1
    if a_index < len(a):
        ret.extend(a[a_index:])
    if b_index < len(b):
        ret.extend(b[b_index:])
    return ret
if __name__ == "__main__":

    #组合小文件
    lt1 = [1,8,12,13]
    lt2 = [5,8,17,28]
    lt3 = [1,90,98,99,100]
    res = merge_list(lt1,lt2)
    res1 = merge_list(res,lt3)
    print(res)
    print(res1)

#########################################结果

[1, 5, 8, 8, 12, 13, 17, 28]
[1, 1, 5, 8, 8, 12, 13, 17, 28, 90, 98, 99, 100]

 

如果是多个待排序的列表,采用方法二较好,借助reduce()函数

二:方法2

from functools import reduce
lts = list()
lts.append(lt1)
lts.append(lt2)
lts.append(lt3)
res2 = reduce(merge_list,lts)
print(res2)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值