与Python中的list.sort()混淆

tic*_*toe 1 python python-3.x

考虑两个列表:

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)

为什么会这样,我们怎么做才能正确!!

Tom*_*Dee 7

这种list1排序很容易说明,因为它只是对数字进行数字排序。

list2这些值中存储为字符串。因此,它正在按ASCII值对它们进行比较和排序。数字3的ASCII值为51,数字4的值为52,数字5的值为53。因此,它完全可以正常工作,如果要对单词进行排序,这就是您要这样做的方式。

但是,如果您只是想按正确的顺序对数字进行排序,请确保它们int像一样list1。或者,您可以在sort方法中设置键,将其强制转换为ints,以便按数字方式进行排序,如下所示:

list2.sort(key=int)
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您想对表示整数的字符串进行排序,就像对整数进行排序一样,则可以在.sort()中添加key参数:.sort(key = int)。这将在排序时将其隐式转换为整数,而无需修改列表本身。 (2认同)