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 位数字?的主要内容,如果未能解决你的问题,请参考以下文章