繁体   English   中英

从列表中找到最大的数字字符串

[英]Find the largest numeric string from a list

我有一个清单。 我想找到最大数量,但是我在下面的代码中尝试了错误的最大数量

list1=['400160', '400161', '400162', '400163', '400164', '400165', '400166', '400167', '400168', '400169', '400170', '400171', '400172', '400173', '400174', '400175', '400176', '400177','99990', '99991', '99992', '99993', '99994', '99995', '99996', '99997', '99998', '99999']
list1.sort() 

#printing the last element 
print("Largest element is:", list1[-1])
#print max(list1)

我的输出如下:

print("Largest element is:", list1[-1])
('Largest element is:', '99999') 

但这是错误的。 如何找到最大数量

使用maxkey参数是另一种明智的方法。

max(list1, key=int)
# '400177'

请注意,您不必事先对list1进行排序,在最坏的情况下,找到最大值永远不会比O(N)复杂。

当前输出的原因是因为您在字符串列表上调用list.sort 默认情况下, sort将按字典顺序比较字符串,并且'9'>'4'。

strings转换为int并找到max

max(map(int, list1))

400177

现在,您正在比较一个字符串列表,该排序按字典顺序进行,如果以这种方式排序,则'99999'是按字典顺序排列的最大值

因此,您需要字符串列表第一个转换为数字的列表,然后用最大内置找到最大。

排序列表以找到最大值可能是一个过大的杀伤力。
排序+最大发现将为O(n*logn)而仅找到最大将为O(n)

In [40]: list1=['400160', '400161', '400162', '400163', '400164', '400165', '400166', '400167', '400168', '400169', '400170', '400171', '400172', '400173', '400174', '400175', '400
    ...: 176', '400177','99990', '99991', '99992', '99993', '99994', '99995', '99996', '99997', '99998', '99999']                                                                   

In [41]: list1 = list(map(int,list1))                                                                                                                                               

In [43]: max(list1)                                                                                                                                                                 
Out[43]: 400177

应该使用mapmax 像这样:

list1=['400160', '400161', '400162', '400163', '400164', '400165', '400166', '400167', '400168', '400169', '400170', '400171', '400172', '400173', '400174', '400175', '400176', '400177','99990', '99991', '99992', '99993', '99994', '99995', '99996', '99997', '99998', '99999']
print(max(map(int, list1)))

输出:

>>>python3 test.py 
400177

应该这样做:

max(map(int, list1))

您必须先将项目从str转换为int 我在这里使用map(int, list1)此操作,该方法将int()应用于list1每个项目。

打印“最大的元素是:”,最大值(map(int,list1))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM