我尝试使用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()
为什么找不到正确的最大值吗?如何得到正确答案?
numbers.split(" ")
为您提供了字符串的列表,而不是整数
如果您想让max()
和min()
找到最高和最低的整数,那么您需要使用map(int, your_array)
将字符串列表转换为整型列表。
示例
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
另一方面,您不需要使用map
或其他函数将字符串列表转换为整数列表,因为它会在列表上重复一次,max
函数接受key
参数,您可以在那里放一个可调用的,如下所示:
a = max(numbers.split(), key=int)
b = min(numbers.split(), key=int)
在这种情况下CCD_ 10与CCD_。
Pythonmax()
函数是准确的。
你应该看看numbers.split(" ")
。
它返回一个字符串列表。因此,最大值比较并给出列表中字符串的最大值。
>>> numbers.split(" ")
>>> ['4', '5', '29', '54', '4', '0', '-214', '542', '-64', '1', '-3', '6', '-6']
而且,随着字符串比较的进行,它将比较每个字符串的第一个字母,最大值为:6。
因为a
和b
的类型是字符串,而不是内部
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