Python 列表排序问题

Python 列表排序问题,python,list,sorting,Python,List,Sorting,我目前正在学习python,在sort()函数方面遇到了一些问题 lenght = int(input()) list_string = input() l = list_string.split(' ') l.sort() print(l) 例如,第一个输入获取列表的长度,然后用户在每个整数之间输入带有空格的列表 3 4 5 6 问题是,当我对该列表排序时: 3 7 8 5 12 14 21 13 18 我得到: ['12','13','14','18','21','3','5','7','

我目前正在学习python,在sort()函数方面遇到了一些问题

lenght = int(input())
list_string = input()
l = list_string.split(' ')
l.sort()
print(l)
例如,第一个输入获取列表的长度,然后用户在每个整数之间输入带有空格的列表

3 4 5 6

问题是,当我对该列表排序时:

3 7 8 5 12 14 21 13 18

我得到:

['12','13','14','18','21','3','5','7','8']


这真的很让人困惑,因为我不知道它为什么会这样…

这是因为您没有将数字转换为
int
,所以它是按
str
对象的元素排序的

您可以使用
map
执行以下操作:

l = list(map(int, list_string.split()))

发生这种情况的原因是这些仍然是字符串(不是
int
s),因此按字母顺序排列,这意味着所有字符串都以1开头,以此类推

如果要将数字视为数字,应首先执行以下操作:

l=[int(x)表示l中的x]

您的列表包含字符串,因此它们是。您可以按int值对列表排序:

在此之后,您的列表仍然是字符串的原始列表,而不是整数。我们只按int值排序,不转换列表元素

排序的工作原理是将列表中的元素临时转换为整数,并根据它们的整数值对列表进行排序。通常,
可以是任何一个参数函数,在排序之前将应用于每个元素


其他答案显示了如何将列表转换为整数。

ty,解决了我的问题!
l.sort(key=int)