zoukankan      html  css  js  c++  java
  • 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排序时,千万注意序列内元素的类型!

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

  • 相关阅读:
    20-存储过程
    21-事务
    18-触发器
    19-函数
    16-pymysql模块的使用
    17-视图
    CodeForces 1369B. AccurateLee
    CodeForces 1312D.Count the Arrays(组合数学)
    CodeForces 1362D. Johnny and Contribution
    CodeForces 1363F. Rotating Substrings
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11419899.html
Copyright © 2011-2022 走看看