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

2024-04-25 08:52:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子。我想找max number,但我找错max number了 我尝试下面的代码

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') 

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


Tags: the代码numberis错误elementsortmax
3条回答

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

因此,您需要首先将字符串列表转换为数字列表,然后使用maxbuiltin查找最大值。你知道吗

对列表进行排序以找到最大值可能是一种过分的做法。
排序+最大值查找将是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

使用keymax参数是另一种明智的方法。你知道吗

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

请注意,您不必事先对list1进行排序,在最坏的情况下,查找max的复杂性永远不会比O(N)差。你知道吗

当前输出的原因是您在字符串列表上调用list.sortsort默认情况下将按字典顺序比较字符串,而“9”和“4”。你知道吗

strings转换为int,然后找到max

max(map(int, list1))

400177

相关问题 更多 >