前言
Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction)。
lambda基础应用
lambda和普通的函数相比,就是省去了函数名称而已,同时这样的匿名函数,又不能共享在别的地方调用。
其实说的没错,lambda在Python这种动态的语言中确实没有起到什么惊天动地的作用,因为有很多别的方法能够代替lambda。
-
使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
-
对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
-
使用lambda在某些时候让代码更容易理解。
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。
lambad在实例中的应用
字符串中的典型应用
输出字符串中出现的最大数字:(示例代码)
# *_* coding : UTF-8 *_*
num2 = "1314521"
print(max(x for x in range(10))) # 取出0~9之间的最大值,输出结果为:9
print(max(num2,key =lambda x:abs(int(x)))) # 取出字符串num2中的最大数字,输出结果为:5
元组中的典型应用
# *_* coding : UTF-8 *_*
tuple1=(2,4,8,16,32,64,128,256,512,1024) # 数字元组
tuple2=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec','Mon','Tues','Wed','Thur','Fri') # 月份、星期简写元组
tuple3=('勇士 57','掘金 54','开推者 53','火箭 53','爵士 50','雷霆 49','马刺 48','快船 48')
tuple4=(("肖申克的救赎",1994,9.3),("教父",1972,9.2),("教父2",1974,9.1),("蝙蝠侠:黑暗骑士",2008,9.0),("低俗小说",1994,8.9)) # 电影信息元组
tuple5=((90,128,87.103),(78,99,134.106),(98,102,133.80),(66,78,97,56),(98,123,88.79))
print(max(tuple2,key=lambda x:len(x))) # 输出元组中长度最大的元组,输出结果为:Sept
print(max(tuple3,key=lambda x:x[-2:])) # 输出结果为:勇士 57
print(max(tuple4,key=lambda x:x[1])) # 输出结果为:('蝙蝠侠:黑暗骑士', 2008, 9.0)
print(max(tuple4,key=lambda x:x[2])[0]) # 输出结果为:肖申克的救赎
print(max(max(tuple5,key=lambda x:x[1]))) # 输出结果为:128
print(max(tuple5,key=lambda x:(x[0]+x[1]+x[2]))) # 输出结果为:(98, 102, 133.8)
print(max(tuple5,key=lambda x:(x[0],x[1]))) # 输出结果为:(98, 123, 88.79)
字典中的典型应用
# *_* coding : UTF-8 *_*
dictcar=[{'名称':'卡罗拉','销量':1181445},{'名称':'福特F系','销量':1080757},{'名称':'RAV4','销量':837624},{'名称':'思域','销量':823169},{'名称':'途观','销量':791275}]
dict1 = {'name': 'john', 'age': 23,'money':1200,'gender':'male'}
dict2 = {'name': 'anne', 'age': 22,'money':1500,'gender':'female'}
dict3 = {'name': 'james', 'age': 33,'money':578,'gender':'male'}
dict4 = {'name': 'nick', 'age': 46,'money':158,'gender':'male'}
dict5 = {'name': 'May', 'age': 18,'money':3210,'gender':'female'} # 创建会员信息字典
lsitdc=[dict1,dict2,dict3,dict4,dict5] # 创建二维会员信息字典
print(max(dictcar,key=lambda x:x['名称'])) # 输出结果为:{'名称': '途观', '销量': 791275}
# 输出结果为:{'名称': '卡罗拉', '销量': 1181445}
print(max(dictcar,key=lambda x:x['销量']))
# 输出结果为:{'name': 'anne', 'age': 22, 'money': 1500, 'gender': 'female'}
print(max(lsitdc,key=lambda item:(item['gender'] == 'female',item['age'])))
# 将积分超过500的会员年龄最大的会员输出,输出结果为:{'name': 'james', 'age': 33, 'money': 578, 'gender': 'male'}
print(max(lsitdc,key=lambda item:(item['money']>500,item['age'] )))
# 按积分输出最大者,输出结果为:{'name': 'May', 'age': 18, 'money': 3210, 'gender': 'female'}
print(max(lsitdc,key=lambda x:x['money']))
print(max(lsitdc,key=lambda x:x['age']).get('name')) # 输出结果为:nick
列表中出现次数最多的数字
# *_* coding : UTF-8 *_*
listcar = [[837624,"RAV4"],[791275,"途观"],[651090,"索罗德"],[1080757,"福特F系"],[789519,"高尔夫"],[747646,"CR-V"],[1181445,"卡罗拉"]]
listcha2=['莱科宁 236','汉密尔顿 158','维泰尔 214','维斯塔潘 216','博塔斯 227']
listcha3=['236 莱科宁','358 汉密尔顿','294 维泰尔','216 维斯塔潘','227 博塔斯']
listnba= [['哈登',78,36.8,36.1],['乔治',77,36.9,28.0],['阿德托昆博',72,32.8,27.7],['恩比德',64,33.7,27.5],['詹姆斯',55,35.2,27.4],['库里',69,33.8,27.3]]
listnum=[[2, 141, 126, 277, 323],[3, 241, 171, 404, 296],[1, 101, 128, 278, 123]]
print(max(listcha2,key=lambda x:x[-3:])) # 输出结果为:莱科宁 236
print(max(listcar)) # 输出结果为:[1181445, '卡罗拉']
print(max(listcar,key=lambda x:x[1])) # 输出结果为:[789519, '高尔夫']
print(max(listnba,key=lambda x:x[3])) #输出结果为: ['哈登', 78, 36.8, 36.1]
print(max(listnba,key=lambda x:(x[2],x[1],x[3]))) #输出结果为: ['乔治', 77, 36.9, 28.0]
print(max(listnba,key=lambda x:x[3]*x[1])) #输出结果为: ['哈登', 78, 36.8, 36.1]
print(max(listnba,key=lambda x:(str(x[3]))[1:])) #输出结果为:['乔治', 77, 36.9, 28.0]
print(max(listnum,key=lambda x:x[1]+x[2]+x[3]+x[4])) #输出结果为:[3, 241, 171, 404, 296]
总结
以上所述是给大家介绍的Python lambda函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,一起探讨学习进步。