python学习之lambda在字符串、元组、字典等典型应用

前言

Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction)。

lambda基础应用

lambda和普通的函数相比,就是省去了函数名称而已,同时这样的匿名函数,又不能共享在别的地方调用。

其实说的没错,lambda在Python这种动态的语言中确实没有起到什么惊天动地的作用,因为有很多别的方法能够代替lambda。

  1. 使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。

  2. 对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。

  3. 使用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函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,一起探讨学习进步。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逃逸的卡路里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值