python list max() 方法只返回 3 位数字?

Posted

技术标签:

【中文标题】python list max() 方法只返回 3 位数字?【英文标题】:python list max() method returns only 3 digit numbers? 【发布时间】:2020-02-13 09:53:14 【问题描述】:

我是一个绝对的初学者,使用 python 3.7 和 Visual Studio 代码。 我必须总结一下。和最大。表中的值。因为我得到了一个错误的结果,所以我删除了所有内容,发现 max() 函数只返回一个包含 4 位数字的属性列表中的最高 3 位数字......有什么问题?

strng=("3928\t107\t3406\t123\t2111\t2749\t223\t125\t134\t146\t3875\t1357\t508\t1534\t4002\t4417")

strng1=strng.replace('\t',' ')
mylist=strng1.split(' ')
mx=max(mylist)

print(mylist)
print(mx)

print(mylist)
print(mx)

返回:

['3928', '107', '3406', '123', '2111', '2749', '223', '125', '134', '146', '3875', '1357', '508', '1534', '4002', '4417']
508

我已经搜索并阅读了很多关于 max() 函数的内容,但没有发现任何有用的信息... ps: min() 效果很好

【问题讨论】:

这些是字符串,而不是数字。字符串按字母顺序排序。 'b' 大于 'aaaaaaa''2' 大于 '1111111' 的方式相同。 【参考方案1】:

那是因为您的列表中有字符串而不是整数,所以 max 函数没有按预期工作。这是你可以做的:

mylist = [int(x) for x in mylist]
max(mylist)

输出:

4417

【讨论】:

澄清一下:max 函数正常工作,但由于输入类型,它没有按预期工作【参考方案2】:

如果出于某种原因您想选择具有 int 表示最大值的 string,您可以使用 max 的 key 参数:

string = "3928\t107\t3406\t123\t2111\t2749\t223\t125\t134\t146\t3875\t1357\t508\t1534\t4002\t4417"
mx = max(string.split(), key=int)
print(mx)

注意mx 将是一个字符串。

【讨论】:

【参考方案3】:

你需要将它们转换成int,因为strings有不同的排序:

strng="3928\t107\t3406\t123\t2111\t2749\t223\t125\t134\t146\t3875\t1357\t508\t1534\t4002\t4417"

mylist=strng.split('\t')
mx=max(int(x) for x in mylist)

print(mylist)
print(mx)

【讨论】:

【参考方案4】:

由于列表未转换为整数列表,因此 max 函数返回字典序上最大的字符串。 尝试添加行

int_list = [int(i) for i in mylist]

然后打印

max(int_list)

【讨论】:

【参考方案5】:

您必须将字符串列表转换为 int

strng=("1928\t107\t3406\t123\t2111\t2749\t223\t125\t134\t146\t3875\t1357\t508\t1534\t4002\t4417")
mylist=strng.split('\t')
for i in range(0, len(mylist)): 
    mylist[i] = int(mylist[i])
print(max(mylist))

希望以上代码能解决您的问题

【讨论】:

以上是关于python list max() 方法只返回 3 位数字?的主要内容,如果未能解决你的问题,请参考以下文章

Python 列表的操作方法

Python list

Python中max()内置函数使用(list)

Python3.6列表函数&方法

python列表(list)

Python学习——列表操作全透析