字符串分割成为列表以后求最小值好像哪里出问题?
que = '1 3 -4 5 6 -7 -8'spl = que.split()
max1 = max(spl)
min1 = min(spl)
print(max1,min1)
用max得出最大值是6没错,但是用min得出的最小值显示的是-4?
这....咋回事啊@fishC 问题出在你用split()函数将字符串que分割成列表spl时,分割的结果是字符串类型的元素。而max()和min()函数默认比较的是字符串的大小,而不是其中的数值大小。
要解决这个问题,可以通过map()函数将spl列表中的元素转换为整型,然后再进行比较。具体代码如下:
que = '1 3 -4 5 6 -7 -8'
spl = que.split()
spl = list(map(int, spl))
max1 = max(spl)
min1 = min(spl)
print(max1, min1)
这样,就可以得到正确的最小值-8了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-1-17 13:39
问题出在你用split()函数将字符串que分割成列表spl时,分割的结果是字符串类型的元素。而max()和min()函数 ...
split()分割的结果是字符串类型的元素,这个怎么理解? a36804070 发表于 2024-01-17 13:45
split()分割的结果是字符串类型的元素,这个怎么理解 ...
当我们使用split()函数将字符串进行分割时,它会根据指定的分隔符(默认是空格)将字符串切割成多个子串,并将这些子串保存在一个列表中。例如,对于字符串'1 3 -4 5 6 -7 -8',通过split()函数的分割结果就是一个包含了每个数字字符串的列表。
然而,需要注意的是,split()函数返回的是字符串类型的元素。也就是说,即使原始字符串中的每个子串都表示一个数字,但在列表中仍然以字符串的形式存在。例如,分割后的列表spl是['1', '3', '-4', '5', '6', '-7', '-8'],其中的每个元素都是字符串类型。
而在Python中,字符串类型的比较是按照字符的ASCII码进行比较。所以,如果直接使用max()和min()函数对spl进行比较,则会得到按照字典序排列后的最大值和最小值,而不是按照数值大小比较。
为了解决这个问题,我们可以使用map()函数将spl列表中的每个元素转换为整型,以便进行数值大小的比较。通过提供int作为map()函数的参数,我们可以将spl中的每个字符串元素转换为对应的整数。这样,再使用max()和min()函数比较时,就能得到正确的最大值和最小值。
希望这个解释能够帮助到你理解split()函数的返回结果和问题的解决方法。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]