python lambda函数详细解析(面试经常遇到)
1 作用:通常是用来在python中创建匿名函数的
2 格式: lambda 参数[,参数] : 表达式
3 注意:
(1)lambda定义的是单行函数, 如果需要复杂的函数,应该定义普通函数
(2)lambda参数列表可以包含多个参数,例如 lambda x,y : x + y
(3)lambda中的表达式不能含有命令, 而且只限一条表达式
4、lambda函数基础:
lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的。如下:
1 2 3 4 5 | """命名的foo函数""" def foo(): return 'beginman' #Python中单行参数可以和标题写在一行 """lambda关键字创建匿名函数,该表达式同以上函数""" lambda : 'beginman' |
上面的只是简单的用lambda创建一个函数对象,并没有保存它也没有调用它,时刻会被回收了。这里我们保存并调用:
1 2 | bar = lambda : 'beginman' print bar() #beginman |
从上面几个例子中,可易理解Python lambda语法:
1 | lambda [arg1[,arg2,arg3....argN]]:expression |
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。
1 | print lambda : 'beginman' #<function <lambda> at 0x00B00A30> |
无参数:
如果没有参数,则lambda冒号前面就没有,如以上例子。
有参数:
1 2 3 4 5 6 7 8 | def add(x,y): return x + y add2 = lambda x,y:x + y print add2( 1 , 2 ) #3 def sum (x,y = 10 ): return x + y sum2 = lambda x,y = 10 :x + y print sum2( 1 ) #11 print sum2( 1 , 100 ) #101 |
lambda函数的使用举例说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 根据参数是否为 1 决定s为yes还是no >>> s = lambda x: "yes" if x = = 1 else "no" >>> s( 0 ) 'no' >>> s( 1 ) 'yes' 使用 sorted ()方法和 list .sort()方法进行排序 elements = [( 2 , 12 , "A" ),( 1 , 11 , "N" ),( 1 , 3 , "L" ),( 2 , 4 , "B" )] >>> sorted (elements) [( 1 , 3 , 'L' ), ( 1 , 11 , 'N' ), ( 2 , 4 , 'B' ), ( 2 , 12 , 'A' )] 根据elements每个元组后两项进行排序,e表示列表中每个三元组元素 在表达式是元组,且 lambda 为一个函数的参数时, lambda 表达式的圆括号是必需的 >>> elements.sort(key = lambda e:(e[ 1 ],e[ 2 ])) >>> elements [( 1 , 3 , 'L' ), ( 2 , 4 , 'B' ), ( 1 , 11 , 'N' ), ( 2 , 12 , 'A' )] 分片方式得到同样的效果 >>> elements.sort(key = lambda e:e[ 1 : 3 ]) >>> elements [( 1 , 3 , 'L' ), ( 2 , 4 , 'B' ), ( 1 , 11 , 'N' ), ( 2 , 12 , 'A' )] >>> elements.sort(key = lambda e:(e[ 2 ].lower(),e[ 1 ])) 以下两种方法等价,都可以通过调用area( 5 , 3 ),结果相同 >>> area = lambda b,h: 0.5 * b * h >>> def area(b,h): return 0.5 * b * h 默认字典使用,存取不不在的键时,创建一个新项,键为这个不存在的键,值为 lambda 函数的值 >>> import collections >>> one_dict = collections.defaultdict( lambda : - 1 ) >>> two_dict = collections.defaultdict( lambda :( 0 , 0 )) >>> three_dict = collections.defaultdict( lambda : "No message avaliable" ) |
如果觉得对您有帮助,麻烦您点一下推荐,谢谢!
好记忆不如烂笔头
好记忆不如烂笔头
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术