Python 列表排序问题
我目前正在学习python,在sort()函数方面遇到了一些问题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','
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)