[英]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')
但这是错误的。 如何找到最大数量
使用max
的key
参数是另一种明智的方法。
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
应该使用map
和max
。 像这样:
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.