Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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';s max()函数不准确?_Python_Python 2.7_Max - Fatal编程技术网

为什么Python';s max()函数不准确?

为什么Python';s max()函数不准确?,python,python-2.7,max,Python,Python 2.7,Max,我试图使用该函数,但无法使用它获得正确的最大值 例如: numbers = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6" a = max(numbers.split(" ")) b = min(numbers.split(" ")) print a print b 输出: 6 -214 这显然是错误的,最大值应该是542。有人知道为什么max()找不到正确的最大值吗?如何获得正确答案?Pythonmax()函数是准确的 您应该看看数字。拆分(“”) 它返回一个

我试图使用该函数,但无法使用它获得正确的最大值

例如:

numbers = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
a = max(numbers.split(" "))
b = min(numbers.split(" "))
print a
print b
输出:

6
-214
这显然是错误的,最大值应该是542。有人知道为什么
max()
找不到正确的最大值吗?如何获得正确答案?

Python
max()
函数是准确的

您应该看看
数字。拆分(“”)

它返回一个字符串列表。因此,max比较并给出列表中字符串的max

>>> numbers.split(" ")
>>> ['4', '5', '29', '54', '4', '0', '-214', '542', '-64', '1', '-3', '6', '-6']

而且,随着字符串比较的进行,它将比较每个字符串的第一个字母,最大值为:6。

数字。拆分(“”
提供字符串列表,而不是整数。


如果希望
max()
min()
查找最高和最低整数,则需要使用
map(int,您的数组)
将字符串列表转换为整数列表

示例

numbers = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
numbers = numbers.split(" ")  # Splits your string into a list of strings
numbers = map(int, numbers)  # Converts each element in your list to int

a = max(numbers)
b = min(numbers)
print a  # Outputs 542
print b  # Outputs -214

因为
a
b
是字符串类型,而不是int

numbers="4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
a = max(map(int, numbers.split(" ")))
b = min(map(int, numbers.split(" ")))
print a
print b
# 542
# -214
试试这个:

numbers="4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
a = max(list(map(int, numbers.split(" "))))
b = min(list(map(int, numbers.split(" "))))
print a
print b

另一方面,您不需要使用
map
或其他函数将字符串列表转换为整数列表,因为它会在列表上重复一次,
max
函数接受
参数,您可以在其中放置一个可调用的参数,如下所示:

a = max(numbers.split(), key=int)
b = min(numbers.split(), key=int)

同样在这种情况下,
split()
split(“”
)相同,大家好,欢迎来到StackOverflow!我们更喜欢沿着代码进行一些解释,而不是“仅代码”的答案,因为这将让读者理解原因
为什么
,而不仅仅是复制粘贴。另外请注意,与其他答案(Oleg Kovalov发布的相同代码)相比,这个答案没有带来任何新的内容。
split(“”
不同于
split()
print(“a b c d e.split(“”)->[a”,“b”,“b”,“b”,“c”,“c”,“d”,“d”,“d”,“d”,“e”,“d”,“d”,“d”,“d”,“d”,“d”,“d”,“e”],,”,“,”,”,“,”,”)
vs.code>['a','b','c','d','e'](如果在b和c,c和d,d和e之间有多个空格)这条注释没有正确显示:“a_b______________________________e”这是对的@PatrickArtner,我在本例中的意思是相同的。谢谢