lambda语句被用来创建新的函数对象,并且在运行时返回它们
python使用lambda关键字来创建匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
lambda只是一个表达式,函数体比def简单很多
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的名字控件,且不能访问自由参数列表之外全局名字里的参数,不能打印语句,不能用if……else,不能写多行语句
>>> func(1,2,3,4,c=5,d=6)
720
>>> func(1,2,*(3,4),**{"c":5,"d":6})
720
>>>
>>> s=lambda x:x+1
>>> type(s)
<class 'function'>
>>> s(1)
2
>>> s=lambda:1
>>> s
<function <lambda> at 0x0000000002684598>
>>> s()
1
map()
有两个参数(函数,序列)
>>> map(lambda x:x+1,[1,2,3,4])
<map object at 0x0000000002687358>
>>> list(map(lambda x:x+1,[1,2,3,4]))
[2, 3, 4, 5]
练习:把list中的数字转为字符串并用*连接
>>> list(map(lambda x:str(x)+"*",[1,2,3,4]))
['1*', '2*', '3*', '4*']
>>> list(map(lambda x,y:x*y,[1,2,3,4],[10,20,30,40]))
[10, 40, 90, 160]