如何将列表按升序排序? sort()函数不起作用?

时间:2019-05-14 05:57:52

标签: 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.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()

给出了错误的升序?

谢谢!

2 个答案:

答案 0 :(得分:1)

split的结果始终是字符串list,其排序方式与ints不同。您需要转换它们;一种方法是list理解:

numbers = [int(number) for number in inputstring.split()]

答案 1 :(得分:0)

据我所知,您正在按以下步骤向程序提供输入。

13 3 20

默认情况下,它将输入视为字符串。

因此,当您分割输入时,它将创建一个包含string元素而不包含integer而不是['13', '3', '20']这样的[13, 3, 20]元素的列表,这就是您可能会看到意外的输出。

尝试解决此问题。

lis = input().split()
lis = [int(i) for i in lis]
lis.sort()