python列表合并+排序的解决方法

本文解决了一个列表合并后的排序问题,并提供了使用循环进行数值比对和列表添加的方法,同时优化了处理逻辑,确保所有元素都能正确地整合进新的有序列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在编写列表合并的代码时,遭遇了合并后的列表无法排序的问题。

a = [1,2,3,4,5]
b = [1,5,7,9]
c = a+b
print(c)
print(c.sort())
print(c.sorted())

执行结果:

[1, 2, 3, 4, 5, 1, 5, 7, 9]
None
Traceback (most recent call last):
  File "1.py", line 7, in <module>
    print(c.sorted())
AttributeError: 'list' object has no attribute 'sorted'

变量c正常显示2个列表的相加

第二个输出变成了None,这个可以理解,因为sort()是对原有列表的排序

而第三个报错,变成了列表没有sorted属性

这可就有点麻烦了,不能将合并+排序写的很简洁了。

解决方案:

a = [1,2,3,4,5]
b = [1,5,7,9]
for i in a:
	for j in b:
		if i <= j:
			b.insert(b.index(j), i)
			break
print(b)

用for循环嵌套来进行数值的比对和列表的添加

输出结果:

[1, 1, 2, 3, 4, 5, 5, 7, 9]

 

9-8更新:

经过一位用户的提醒,发现代码中有一个逻辑上需要优化的地方。

当第一个列表中的值大于第二个列表中的最大值时,大于的部分不会整合入新的列表。所以增加2个列表最大值的大小判断条件。

更新代码如下:

a = [23,1,7,5,9,9,9,10]
b = [1,2,3,55,4,5,1,10]
a.sort()
b.sort()
if max(b) > max(a): 
    for i in a:
        for j in b:
            if i <= j:
                b.insert(b.index(j), i)
                break
    print(b)
else:
    for i in b:
        for j in a:
            if i <= j:
                a.insert(a.index(j), i)
                break
    print(a)


代码实际测试通过

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值