首页 > 解决方案 > 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()函数如何工作的东西,可以解释这种行为。

标签: pythonpython-3.xlistmax

解决方案


当我写这个问题并试图用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()检查字母顺序作为字符串/字符列表的值,而不是其整数/数字值。希望这会有所帮助。


推荐阅读