max函数可以用于绝大部分求最大或最小的问题上。

巨人的肩膀
python奇技淫巧——max/min函数的用法
使用’key’和lambda表达式的python max函数

例1:获取链表绝对值最大的元素。

testlist = [9.2, 10, -20.3, -7.0, 9.999, 20.111]
print(max(testlist, key=abs))

#返回 -20.3

key关键字的作用是,对每个testlist元素先使用key指定的function来处理,然后再比较、返回预期的元素。

例2:key参数使用自定义函数。

def func(n):
    return abs(n)
testlist = [9.2, 10, -20.3, -7.0, 9.999, 20.111]
print(max(testlist, key=func))
  
#返回 -20.3

例3:使用lambda函数作为key的参数。

testlist = [9.2, 10, -20.3, -7.0, 9.999, 20.111]
print(max(testlist, key=lambda x: abs(x)))  #结果与例1、例2一致

例4:返回字典中Value最大对应的Key。

probabilities_dict = {'Sunny': 0.30, 'Cloudy': 0.35, 'Windy': 0.15, 'Rainy': 0.20}
print(max(probabilities_dict, key=lambda x: probabilities_dict[x]))  #返回 Cloudy
print(max(probabilities_dict, key=probabilities_dict.get))  #返回 Cloudy

例4:统计一个整型序列中出现次数最多的整数及其出现次数。

输入格式:输入在一行中给出序列中的N个整数。数字间以空格分隔。
输入样例:10 3 2 -1 5 3 4 3 0 3 2
输出格式:在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输出样例:3 4

#第一种解法
from collections import Counter
l = list(map(int, input().split()))
cnt = Counter(l)
print(*cnt.most_common(1)[0])

#第二种解法
l = list(map(int, input().split()))
ans = max(set(l), key=l.count)
print(ans, l.count(ans))

例5:本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。

输入格式:输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
输出格式:在一行中用以下格式输出最长的字符串:The longest is: 最长的字符串,如果字符串的长度相同,则输出先输入的字符串。

# 使用max进行解决
n = int(input())
ans = ''
for _ in range(n):
    s = input()
    ans = max(ans, s, key=len)
print(f'The longest is: {ans}')

# 正常判断解决
n = int(input())
ans = ''
StrLen = 0
for _ in range(n):
    s = input()
    tmp = len(s)
    if tmp > StrLen:
        StrLen = tmp
        ans = s
print(f'The longest is: {ans}')
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐