考虑两个列表:
list1=[-4,-5,-3]
list2=['-4','-5','-3']
Run Code Online (Sandbox Code Playgroud)
现在,如果我们使用
list1.sort()
list2.sort() # in python3 
Run Code Online (Sandbox Code Playgroud)
我们得到矛盾的结果:
[-5, -4, -3]
['-3', '-4', '-5']`
Run Code Online (Sandbox Code Playgroud)
为什么会这样,我们怎么做才能正确!!
这种list1排序很容易说明,因为它只是对数字进行数字排序。
在list2这些值中存储为字符串。因此,它正在按ASCII值对它们进行比较和排序。数字3的ASCII值为51,数字4的值为52,数字5的值为53。因此,它完全可以正常工作,如果要对单词进行排序,这就是您要这样做的方式。
但是,如果您只是想按正确的顺序对数字进行排序,请确保它们int像一样list1。或者,您可以在sort方法中设置键,将其强制转换为ints,以便按数字方式进行排序,如下所示:
list2.sort(key=int)
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           75 次  |  
        
|   最近记录:  |