"""
a.普通用法:max(序列) - 求序列中元素的最大值(序列中元素的类型必须一致,而且元素本身必须支持比较运算)
b.实参高阶函数:max(序列, key=函数) - 通过函数来定制求最大值的方式
序列 - 需要获取某种最大值对应的序列
函数 - 有且只有一个参数(指向/代表序列中每一个元素);有一个返回值(求最大值的时候的比较对象)
"""
nums =[93,45,67,122]# 求最大元素max(nums)# 球个位数最大的元素
result =max(nums, key=lambda item: item %10)print(result)# 67# 求十位数最大元素
result =max(nums, key=lambda item: item //10%10)print(result)# 93# 求各位数之和最大的元素
nums =[930,456,67,122]# 方法一:defsum1(item):
s =0for x instr(item):
s +=int(x)return s
result =max(nums, key=sum1)print(result)# 456# 方法二:
result =max(nums, key=lambda item:sum([int(x)for x instr(item)]))print(result)# 456# 练习:已知以下列表:
students =[{'name':'stu1','age':20,'score':67,'sex':'男'},{'name':'stu2','age':18,'score':82,'sex':'女'},{'name':'stu3','age':19,'score':54,'sex':'女'},{'name':'stu4','age':22,'score':77,'sex':'男'},{'name':'stu5','age':21,'score':56,'sex':'男'},{'name':'stu6','age':18,'score':78,'sex':'男'},{'name':'stu7','age':16,'score':100,'sex':'女'}]# 1)求列表中年龄最大的学生信息
result =max(students, key=lambda item: item['age'])print(result)# {'name': 'stu4', 'age': 22, 'score': 77, 'sex': '男'}# 2)求列表中成绩最低的学生信息
result =min(students, key=lambda item: item['score'])print(result)# {'name': 'stu3', 'age': 19, 'score': 54, 'sex': '女'}# 3)求女生中年龄最大的学生信息
result =max([x for x in students if x['sex']=='女'], key=lambda item: item['age'])print(result)# {'name': 'stu3', 'age': 19, 'score': 54, 'sex': '女'}# 4)求男生中年龄最小的学生信息
result =min([x for x in students if x['sex']=='男'], key=lambda item: item['age'])print(result)# {'name': 'stu6', 'age': 18, 'score': 78, 'sex': '男'}# 推导式使用情况一:对原列表中的所有元素或者部分元素进行交换# 1)所有元素乘以2
num1 =[10,23,30,40,51]
num2 =[x*2for x in num1]print('所有元素乘以2:', num2)# 所有元素乘以2: [20, 46, 60, 80, 102]# 推导式使用情况2:提取(删除)部分元素# 2)所有偶数乘以2
num3 =[x if x &1else x*2for x in num1]#print(num3)# [20, 23, 60, 80, 51]# 3)获取奇数元素
num4 =[x for x in num1 if x &1]print(num4)# [23, 51]