sorted排序为什么不是我想要的结果?
Posted kaerxifa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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排序时,千万注意序列内元素的类型!
尤其是不要把字符型数字当成是数字使用!
以上是关于sorted排序为什么不是我想要的结果?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Collections.sort 使用合并排序而不是快速排序?