python之Lambda函数---笔记

《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")

  

断言???

相关文章
相关标签/搜索