鱼C论坛

 找回密码
 立即注册
查看: 347|回复: 3

[已解决]字符串分割成为列表以后求最小值好像哪里出问题?

[复制链接]
发表于 2024-1-17 13:39:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. que = '1 3 -4 5 6 -7 -8'
  2. spl = que.split()
  3. max1 = max(spl)
  4. min1 = min(spl)
  5. print(max1,min1)
复制代码


用max得出最大值是6没错,但是用min得出的最小值显示的是-4?
这....咋回事啊@fishC
最佳答案
2024-1-17 13:39:27
问题出在你用split()函数将字符串que分割成列表spl时,分割的结果是字符串类型的元素。而max()和min()函数默认比较的是字符串的大小,而不是其中的数值大小。

要解决这个问题,可以通过map()函数将spl列表中的元素转换为整型,然后再进行比较。具体代码如下:

  1. que = '1 3 -4 5 6 -7 -8'
  2. spl = que.split()
  3. spl = list(map(int, spl))
  4. max1 = max(spl)
  5. min1 = min(spl)
  6. print(max1, min1)
复制代码


这样,就可以得到正确的最小值-8了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-17 13:39:27 | 显示全部楼层    本楼为最佳答案   
问题出在你用split()函数将字符串que分割成列表spl时,分割的结果是字符串类型的元素。而max()和min()函数默认比较的是字符串的大小,而不是其中的数值大小。

要解决这个问题,可以通过map()函数将spl列表中的元素转换为整型,然后再进行比较。具体代码如下:

  1. que = '1 3 -4 5 6 -7 -8'
  2. spl = que.split()
  3. spl = list(map(int, spl))
  4. max1 = max(spl)
  5. min1 = min(spl)
  6. print(max1, min1)
复制代码


这样,就可以得到正确的最小值-8了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-17 13:45:29 | 显示全部楼层
FishC 发表于 2024-1-17 13:39
问题出在你用split()函数将字符串que分割成列表spl时,分割的结果是字符串类型的元素。而max()和min()函数 ...

split()分割的结果是字符串类型的元素,这个怎么理解?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-17 13:46:22 | 显示全部楼层
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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-10 17:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表