Python的Lambda表达式

       Python的 Lambda 表达式,本质上仍是一个函数。通常是在需要一个函数,但这个函数也许就用这一次,或者这个函数异常简单,于是不想去耗费时间精力定义一个函数的场合下使用。由于是没有名字的函数,所以lamba也通常叫匿名函数
       这种场景在实际应用中其实很常见:你在某处就真的只需要一个能做一件事情的函数而已,连它叫什么名字都无关紧要,Lambda 表达式就可以用来做这件事。
       看网上举的较多的Lambda配合map的例子:
a = [0, 1, 2, 3, 4, 5]
print(list(map(lambda x: x ** 2, a)))
与下面的显式函数sq()定义功能相同。
def sq(x):  
return x ** 2

a = [0, 1, 2, 3, 4, 5]
print(list(map(sq,a)))
输出结果都是:
[0, 1, 4, 9, 16, 25]
实际上这种情况下用列表推导式效果更好。
a = [0, 1, 2, 3, 4, 5]
print([x ** 2 for x in a])

个人认为Lambda用在一些较复杂结构序列的 sort/sorted、max,min等 操作中更能发挥作用。示例:
scores = [['Michael', 4.0], ['Lisa', 4.2], ['Jack', 5.0], ['Rose', 4.5], ['Tony', 3.5]]
scores表示每个人和相应得分的嵌套列表,需要按得分进行排序操作,用Lambda表达式:
print('max_scores=', max(scores, key=lambda x: x[1]))
scores.sort(key=lambda x: x[1])
print('scores=', scores)
     
     
输出结果:
max_scores= ['Jack', 5.0]
scores= [['Tony', 3.5], ['Michael', 4.0], ['Lisa', 4.2], ['Rose', 4.5], ['Jack', 5.0]]
        Lambda的使用非常方便,但Python 为了防止Lambda的滥用,造成可读性下降和程序不清晰的问题, 限制Lambda只能由1条表达式组成。也就是回归Lambda的本质,执行简单操作的无名(匿名)函数。对于简单的,易于理解的,用lambda没问题,但是对于较复杂的操作和运算,进行正常的函数定义吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值