Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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 已排序(file.read().split())未给出排序结果_Python_Python 3.x - Fatal编程技术网

Python 已排序(file.read().split())未给出排序结果

Python 已排序(file.read().split())未给出排序结果,python,python-3.x,Python,Python 3.x,这不适用于数字。例如 我有这样的价值观 [99,37,74,98,223,189] 使用下面的命令,我们得到的输出是 [189,223,37,74,98,99] 但实际产出是预期的 [37,74,98,99,189,223] 代码: 看起来您的数组由字符串化的数字组成。转换成整数,然后排序。怎么样 [37,74,98,99,189,223] 您正在对数字的字符串表示进行排序,而不是对数字本身进行排序,因此它是按文本的第一个字符排序,而不是按其表示的数字的大小排序。即,1234将在23之前

这不适用于数字。例如

我有这样的价值观

[99,37,74,98,223,189]
使用下面的命令,我们得到的输出是

[189,223,37,74,98,99]
但实际产出是预期的

[37,74,98,99,189,223]
代码:


看起来您的数组由字符串化的数字组成。转换成整数,然后排序。

怎么样


[37,74,98,99,189,223]


您正在对数字的字符串表示进行排序,而不是对数字本身进行排序,因此它是按文本的第一个字符排序,而不是按其表示的数字的大小排序。即,
1234
将在
23
之前排序,因为
1
小于
2
。 要以数字方式进行在线排序,可以使用:
sorted([int(num)代表file.read().split()])
。为了使代码更具可读性,您可以将其拆分为多行:

text=file.read().split()
numbers=[int(num)表示文本中的num]
已排序的\u数字=已排序的(数字)

您可以这样写:

values='99377498223189'.split()
结果=排序(映射(int,值))

通过这种方式,您将函数
int
应用于
值的每个值

显然,因为
fh.read().split()
返回一个字符串列表。也许您应该添加如何解决此问题的方法?您的实际输出不包含引号吗?这没有帮助,因为他从文件中获取数字,没有在脚本中输入它们。作者询问如何从文件中获得排序的数字,因此这不会直接回答他们的问题question@ZaeZoxol没有区别。作者的问题是关于“如何将字符串转换为int”问题的名称是
file.read()
,问题在于从文件中读取数字时,它们是字符串而不是整数/浮点数。你的答案不包括从文件中读取,这是一个小的修正,但我不确定编辑你的文章以包含它是否符合“尊重原始作者”@ZaeZoxol这是相同的解决方案,OP从文件中读取没有问题。“sorted([int(num)for num in file.read().split())”这在python中是一个常规做法,当我们打开循环时,我们需要关闭它吗?这是一种正确的编程方式吗?我不确定我是否理解你的评论。列表理解是python的一个常用特性,是的;虽然它确实会降低可读性,所以我也将其拆分为多行。这是否澄清了我的答案?
word_list = sorted(fh.read().split())
values = [99, 37, 74, 98, 223, 189]
values = [int(i) for i in values]
print(sorted(values))