Python sort排序 字符串中含有数字 数字10排在数字2前面问题

本文介绍了在Python中如何处理含有数字的字符串数组排序问题。通过示例展示了.sort()方法默认排序的不足,并提出了使用匿名函数或自定义函数进行自定义排序的方法,确保数字部分能正确排序。同时,该方法也适用于二维数组的排序。文章还提供了排序函数的扩展应用,展示如何将排序逻辑封装为独立函数,以提高代码复用性。
摘要由CSDN通过智能技术生成

1. sort直接排序

arrRes = ['学生2', '学生1', '学生10', '学生4', '学生3']
arrRes.sort()
print(arrRes )
# ['学生1', '学生10', '学生2', '学生3', '学生4']

含有数字的字符串数组直接使用.sort()排序,得到的结果往往跟我们想要的有些出入。如上,我们想要的结果是[‘学生1’, ‘学生2’, ‘学生3’, ‘学生4’, ‘学生10’],但结果却是[‘学生1’, ‘学生10’, ‘学生2’, ‘学生3’, ‘学生4’]。因为按顺序比较字符串到第三个字符的时候1比2小,所以‘学生10’排在‘学生2’前面了,而不会把10当成一个数字整体跟2进行比较。

2. 借用函数自定义排序

所以对于这种字符串跟数字排列比较有规律的,可以人为将它分成两个或多个部分进行比较。

使用匿名函数,第一个参数用来排序字符串,第二个参数用来排序数字。数字排序必须转成int或者其他数字格式,不然字符串10还是排在2前面。

arrRes = ['学生2', '学生1', '学生10', '学生4', '学生3']
arrRes.sort(key=
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值