python合并两个有序列表(list)

本文介绍了如何在Python中合并两个已排序的列表,保持结果列表依然有序。主要方法包括使用heapq.merge()函数和自定义循环算法。heapq模块的merge函数通过比较输入序列的第一个元素来依次合并。此外,还提供了两种不同的自定义合并策略。
摘要由CSDN通过智能技术生成

python合并两个有序列表(list)

 

原来的列表是有序的合并之后的列表也要是有序的。

很多时候,我们会遇到一个问题,我们希望使用归并排序的归并函数,这是一个经典问题,在竞争性编程中经常出现。这种类型的问题,当知道更短和紧凑的方法来执行它们总是相当方便。

python中的heapq模块的merge方法可以实现有序列表的合并:

heapq.merge()要求所有的输入序列都是有序的,它只是简单地检查每个输入序列中的第一个元素,将最小的那个发送出去,然后重复执行这个步骤,直到所有的输入序列都耗尽为止。

See the source image

 

方法一:循环算法

定义一个新的空列表、比较两个列表的首个元素、小的就插入到新列表里、把已经插入新列表的元素从旧列表删除、直到两个旧列表有一个为空、再把旧列表加到新列表后面

def loop_merge_sort(l1, l2):
    tmp = []
    while len(l1) > 0 and len(l2) > 0:
        if l1[0] < l2[0]:
            tmp.ap
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data+Science+Insight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值