Python 如何将列表按升序排序?sort()函数不工作?
我已经开始了一个简单的代码,它获取数字的输入,然后将这些数字按升序排序。我尝试使用sort函数,但它将这些数字按字母顺序排序。例如: [3,13,20]将分类为13,20,3,因为第一个数字是1-3,第二个数字是2-0,第三个数字是3 我试着简单地在带有[3,13,20]的列表上使用sort函数,它给出了正确的答案:3,13,20 因此,我得出结论,问题在于我的代码的第一部分Python 如何将列表按升序排序?sort()函数不工作?,python,sorting,Python,Sorting,我已经开始了一个简单的代码,它获取数字的输入,然后将这些数字按升序排序。我尝试使用sort函数,但它将这些数字按字母顺序排序。例如: [3,13,20]将分类为13,20,3,因为第一个数字是1-3,第二个数字是2-0,第三个数字是3 我试着简单地在带有[3,13,20]的列表上使用sort函数,它给出了正确的答案:3,13,20 因此,我得出结论,问题在于我的代码的第一部分 inputstring = input("Enter Numbers:") numbers = inputstring.
inputstring = input("Enter Numbers:")
numbers = inputstring.split()
numbers.sort()
print(numbers)
这将导致数字按字母顺序排列为3、13、20。鉴于:
list = [13,3,20]
list.sort()
print(list)
将按升序给出答案3,13,20
是否有人能够帮助调试为什么我的代码的第一部分:
inputstring = input("Enter Numbers:")
numbers = inputstring.split()
给出了错误的升序
谢谢 拆分的结果始终是一个字符串列表,其排序与int不同。你需要转换它们;一种方法是列表理解:
numbers = [int(number) for number in inputstring.split()]
据我所知,你给程序的输入如下
13 3 20
默认情况下,它将把输入看作字符串。
因此,当您拆分输入时,它会创建一个包含字符串元素的列表,而不是像这样的整数元素['13','3','20'],而不是[13,3,20],这就是您可能看到意外输出的原因
试试这个来解决它
lis = input().split()
lis = [int(i) for i in lis]
lis.sort()
天哪,我真傻。。。是因为当我在“数字”上使用.sort函数时,数字是str格式的吗?这就是它按字母顺序排序的原因!?您的输入是一个字符串列表,因此它按字符串顺序排序。尝试使用INT将输入转换为整数谢谢,我刚刚意识到我的愚蠢错误0;!以上内容是否与:numbers=listmaint,numbers相同?@这是endofpine,是的。就个人而言,在这种情况下,我更喜欢列表理解。