我有一个清单。我想找到最大数量,但是我得到了错误的最大数量 我尝试下面的代码
Tk()
我的输出如下:-
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)
但是它是错误的。如何找到最大数量
答案 0 :(得分:4)
使用key
的{{1}}参数是另一种明智的方法。
max
请注意,您不必事先对max(list1, key=int)
# '400177'
进行排序,在最坏的情况下,找到最大值绝不会比O(N)复杂。
当前输出的原因是因为您在字符串列表上调用list1
。 list.sort
默认情况下将按字典顺序比较字符串,并且'9'>'4'。
答案 1 :(得分:2)
将strings
转换为int
并找到max
:
max(map(int, list1))
400177
答案 2 :(得分:2)
现在,您正在比较一个字符串列表,并且排序按字典顺序进行,如果以这种方式排序,则'99999'
是按字典顺序的最大值
因此,您需要先将字符串列表转换为数字列表,然后使用内置的max查找最大值。
排序列表以查找最大值可能是一个过大的决定。
排序+最大查找数将为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
答案 3 :(得分:2)
应使用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
答案 4 :(得分:1)
这应该做到:
max(map(int, list1))
您必须先将项目从str
转换为int
。我在这里使用map(int, list1)
进行了此操作,该方法将int()
应用于list1
中的每个项目。
答案 5 :(得分:1)
打印“最大元素是:”,最大值(map(int,list1))