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

时间:2019-05-24 05:26:22

标签: python python-2.7 list

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

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)

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

6 个答案:

答案 0 :(得分:4)

使用key的{​​{1}}参数是另一种明智的方法。

max

请注意,您不必事先对max(list1, key=int) # '400177' 进行排序,在最坏的情况下,找到最大值绝不会比O(N)复杂。

当前输出的原因是因为您在字符串列表上调用list1list.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)

应使用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

答案 4 :(得分:1)

这应该做到:

max(map(int, list1))

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

答案 5 :(得分:1)

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