lambda表达式

1、lambda的应用场景

如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。

2、lambda语法

 lambda参数列表:表达式

注意

lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。

lambda表达式能接收任何数量的参数但只能返回一个表达式的值。

3、快速入门

 # 函数
 deffn1():
    return200
 
 print(fn1)
 print(fn1())
 
 # lambda表达式
 fn2= lambda: 100
 print(fn2)
 print(fn2())

注意

直接打印lambda表达式,输出的是此lambda的内存地址

4、示例:计算a + b

1.函数实现
 defadd(a,b):
    returna+b
 
 result= add(1,2)
 print(result)

思考:需求简单,是否代码多?

2.lambda实现
 print((lambdaa,b: a+b)(1,2))

5、lambda的参数

1.无参数
 print((lambda: 100))
2.一个参数
 print((lambdaa: a)('hello word'))
3.默认参数
 print((lambdaa,b,c=100: a+b+c)(10,20))
4.可变参数:**args
 print((lambda*args: args)(10,20,30))

注意

这里的可变参数传入到lambda之后,返回值为元组。

5.可变参数:**kwargs
 print((lambda**kwargs: kwargs)(name='python',age=20))

6、lambda的应用

1.带判断的lambda
 print(lambdaa,b: aifa>belseb)(1000,500)
2.列表数据按字典key的值排序
 students= [
   {'name':'Tom','age':18},
   {'name':'Rose','age':19},
   {'name':'Jack','age':20}
 ]
 
 # 按name值升序排列
 students.sort(key=lambdax: x['name'])
 print(students)
 
 #按name值降序排列
 students.sort(key=lambdax: x['name'],reverse=True)
 print(students)
3.当lamdba与map函数一起使用

语法: map(函数名,可迭代对象) 可以对可迭代对象中的每一个元素进映射,分别取值。执行function

 li= [11, 22, 33]
 sl= [1, 2, 3]
 new_list= map(lambdaa, b: a+b, li, sl)
 print(list(new_list))
 [12, 24, 36]
4.当lamdba与reduc函数一起使用的时候

语法:reduce(函数名,可迭代对象) # 这两个参数必须都要有,缺一个不行

 fromfunctoolsimportreduce
 l= [1,2,3,4]
 l1= reduce(lambdax,y:x+y,l)
 print(l1)
 10
5.当lamdba与filter函数一起使用的时候

语法: filter(function,iterable) 他可以根据条件对数据进行过滤。function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据

 lst= [{'id': 1, 'name': 'alex', 'age': 18},
       {'id': 1, 'name': 'wusir', 'age': 17},
       {'id': 1, 'name': 'taibai', 'age': 16}, ]
 ls= filter(lambdae: e['age'] >16, lst)
 print(list(ls))
 [{'id': 1, 'name': 'alex', 'age': 18}, {'id': 1, 'name': 'wusir', 'age': 17}]
6.当lamdba与zip函数一起使用的时候

函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元祖,然后返回由这些元祖组成的内容,如果各个迭代器的元素个数不一致,则按照长度最短的返回

 lst1= [1,2,3]
 lst2= ['a','b','c','d']
 lst3= (11,12,13,14,15)
 foriinzip(lst1,lst2,lst3):
    print(i)
 # 结果:
 # (1, 'a', 11)
 # (2, 'b', 12)
 # (3, 'c', 13)

本人能力有限,如果文章有任何错误欢迎不吝赐教,其次如果大家有任何关于python的疑难杂问,也欢迎和大家一起交流讨论。

关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。

扫描二维码

获取更多精彩

运维猫公众号

有需要技术交流的小伙伴可以加我微信,期待与大家共同成长,本人微信:

扫描二维码

添加私人微信

运维猫博主

扫码加微信

最近有一些星友咨询我知识星球的事,我也想继续在星球上发布更优质的内容供大家学习和探讨。运维猫公众号平台致力于为大家提供免费的学习资源,知识星球主要致力于即将入坑或者已经入坑的运维行业的小伙伴。

点击阅读原文  查看更多精彩内容!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值