Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何让.sort()方法不仅仅按第一个数字排序?_Python_Python 3.x_Python 3.4 - Fatal编程技术网

Python 我如何让.sort()方法不仅仅按第一个数字排序?

Python 我如何让.sort()方法不仅仅按第一个数字排序?,python,python-3.x,python-3.4,Python,Python 3.x,Python 3.4,我正试图整理一份清单。但当我尝试时,它似乎总是按第一个数字排序 这是我的代码: data = input("enter your data separated by spaces: ") data = data.split(' ') data.sort() 我输入的只是数字。例12534664325 但是有了这个输入,输出就有点像12533246645 我的目标是让变量数据正确排序。我希望前面提到的输入的输出是1 3 4 5 25 32 466。我是python新手,所以如果这个问题很简单或者

我正试图整理一份清单。但当我尝试时,它似乎总是按第一个数字排序

这是我的代码:

data = input("enter your data separated by spaces: ")
data = data.split(' ')
data.sort()
我输入的只是数字。例12534664325 但是有了这个输入,输出就有点像12533246645
我的目标是让变量数据正确排序。我希望前面提到的输入的输出是1 3 4 5 25 32 466。我是python新手,所以如果这个问题很简单或者我的术语不适用,我很抱歉。

您没有数字列表,您有一个字符串列表,碰巧是(希望是)数字的字符串表示形式。因此,它们被排序为字符串。作为字符串,
“25”
位于
“3”
之前,原因与
“Jacky”
位于
“K”
之前相同

有两种基本方法可以解决这个问题

如果您确实想要一个数字列表,请将每个字符串转换为一个数字。例如:

data = [int(numstr) for numstr in data]
如果要保留字符串列表,但仍将其作为数字进行排序,则可以使用
函数:

data.sort(key=int)

这两个选项中的任何一个都会引发
ValueError
如果有人键入
spam
而不是
25
。你需要决定在那种情况下你想做什么。可能只是因为出现
ValueError
而失败就可以了。或者你想要一个循环,永远要求一个新的输入行,直到他们给你一个有效的。或者,您想悄悄地跳过非整数,或者将它们排序到最后,或者……无论您想做什么,您都可以这样做,但在您决定要做什么之前。

您正在按字母顺序对输入进行排序:

>>> sorted(["5", "10", "1", "100"])
['1', '10', '100', '5']
'5'>'100'
,就像
'e'>'a'
'east'>'apple'
一样,它们后面会出现:

由于您正在对数字进行排序,请在对其进行排序之前将输入转换为数字:

>>> data = input("enter your data separated by spaces: ")
enter your data separated by spaces: 1 10 100 5
>>> data = [int(n) for n in data.split(' ')]
>>> data.sort()
>>> data
[1, 5, 10, 100]
如果要保留字符串,可以使用键将输入作为整数进行比较:

>>> data = input("enter your data separated by spaces: ")
enter your data separated by spaces: 1 10 100 5
>>> data = data.split(' ')
>>> data.sort(key=int)
>>> data
['1', '5', '10', '100']

请提供输入列表和输出列表的一般示例:编写
方法。但我们无法提供更多帮助,因为我们不知道您正在尝试对哪些数据进行排序,如何对其进行排序,或者您已经尝试了什么。看一看。猜测一下,你会对表示数字的字符串的字典排序感到惊讶,在这种情况下,在对它们进行排序之前,可能会尝试将它们转换为实际数字?
>>> data = input("enter your data separated by spaces: ")
enter your data separated by spaces: 1 10 100 5
>>> data = data.split(' ')
>>> data.sort(key=int)
>>> data
['1', '5', '10', '100']