《Python3 程序开发指南》python
Lambda函数,是一个匿名函数,建立语法:express
lambda parameters:express函数
parameters:可选,若是提供,一般是逗号分隔的变量表达式形式,即位置参数。spa
expression:不能包含分支或循环(但容许条件表达式),也不能包含return(或yield)函数。若是为元组,则应用圆括号将其包含起来。blog
调用lambda函数,返回的结果是对表达式计算产生的结果。排序
根据参数是否为1 决定s为yes仍是no >>> s = lambda x:"yes" if x==1 else "no" >>> s(0) 'no' >>> s(1) 'yes'
上面例子中,将if...else语句缩减为单一的条件表达式,语法为:three
expression1 if A else expression2element
若是A为True,条件表达式的结果为expression1,不然为expression2 开发
如下举例说明lambda函数的使用io
使用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")
断言???