python - Python:max(作为字符的数字列表)给出正确和错误的答案
问题描述
所以这里是确切的场景——考虑这个列表:
x=['4', '5', '29', '54', '4', '0', '-214', '542', '-64', '1', '-3', '6', '-6']
现在max(x)
应该给出'542'而不是给出'6',但是如果你取出'6'它确实给出了'542'作为最大值。min(x)
另一方面,正确给出“-214”作为答案。
如果您将x转换为数字列表,那么显然max(x)
会给出正确的输出542。至少从我对 Python 的了解来看,这是一种不可靠的行为,我想探索一下我是否在这里遗漏了一些关于max()
函数如何工作的东西,可以解释这种行为。
解决方案
当我写这个问题并试图用max()
函数来理解这种行为时,我试过x.sort()
了,它给出了答案。所以让我粘贴排序列表:
['-214','-3','-6','-64','0','1','29','4','4','5','54',' 542','6']
所以基本上这些是字符串,字符串的初始字符决定了它的值作为字符串。意思5kaify
是,将比6kaify
.
为了更清楚起见,如果我将一堆字母添加到此列表中,如下所示:
x=['4', '5', '29', '54', '4', '0',
'd'
, '-214', '542', '-64', '1',
'a'
, '-3',
'c'
, '6', '-6']
max(x)
将按字母顺序给出'd'
答案,它会晚于列表中的所有字符串,因此max()
检查字母顺序作为字符串/字符列表的值,而不是其整数/数字值。希望这会有所帮助。
推荐阅读
- json - 如何访问绑定到 ReactJS 中组件状态的 JSON 对象的值
- airflow - 我们应该让气流调度程序运行多长时间?
- sql-server - 基于 isnull 和聚合值从嵌套查询更新统计信息
- java - 尝试安装 Lombok 时出现 java.lang.UnsatisfiedLinkError
- php - 为什么用 UNION 显示这样的数据
- cloud - Cloud Analyst Simulator 中的虚拟机分配
- php - 将多文本从 Android 发送到 API
- javascript - 当我尝试更改其大小时,图像消失了
- r - 在Stata中模仿_n在R中生成一个虚拟变量
- python - 我的 Python 程序在较新的 Python 版本上有语法错误