sorted排序为什么不是我想要的结果?

 

数据源:

a=['7465', '7514', '8053', '8267', '8507', '8782', '9091', '9292', '9917', '10000', '10009']

我以为b应该是从小到大进行排序的,但从结果看,明显不是这样的

 1 In [1]: a =  ['7465', '7514', '8053', '8267', '8507', '8782', '9091', '9292', '9
 2    ...: 917', '10000', '10009']                                                 
 3 
 4 In [2]: b = sorted(a)                                                           
 5 
 6 In [3]: b                                                                       
 7 Out[3]: 
 8 ['10000',
 9  '10009',
10  '7465',
11  '7514',
12  '8053',
13  '8267',
14  '8507',
15  '8782',
16  '9091',
17  '9292',
18  '9917']

问题分析:

为什么会出现这种情况呢?仔细看了一下list内的数据,都是字符型的,我预期的结果是这些数字从小到大进行排序,所以难道是sort是按照字符串排序的,而非数据

 

接下来验证一下想法:

将list中的字符型数据逐一转换为int型,再进行排序,果然排序的结果就和预期一样了

1 a=['7465', '7514', '8053', '8267', '8507', '8782', '9091', '9292', '9917', '10000', '10009']
2 
3 for i in range(len(a)):
4     a[i]=int(a[i])
5 b = sorted(a)
6 print(b)

执行结果:

[7465, 7514, 8053, 8267, 8507, 8782, 9091, 9292, 9917, 10000, 10009]

 

总结:

使用list排序时,千万注意序列内元素的类型!

尤其是不要把字符型数字当成是数字使用!

转载于:https://www.cnblogs.com/kaerxifa/p/11419899.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值