python之lambda表达式

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

事例(创建匿名函数):
>>>g=lambda x:2*x+1//冒号前面是变量,冒号后面是表达式
>>>g(5)
11
>>>g=lambda x,y:x+y
>>>g(2,3)

5

我们首先看看内置函数:

******* filter()

看注释:help(filter)

>>> help(filter)
Help on built-in function filter in module __builtin__:


filter(...)
    filter(function or None, sequence) -> list, tuple, or string
    
    Return those items of sequence for which function(item) is true.  If
    function is None, return the items that are true.  If sequence is a tuple
    or string, return the same type, else return a list.


>>>list(filter(None,[1,0,False,True]))
[1,True]

同时,我们可以用自定义的函数odd:

>>>def odd(x):
return x%2
>>>temp = range(10)
>>>show = filter(odd,temp)
>>>list(show)
[1,3,5,7,9]


把它写成一个函数(filter的第一参数是function or None

>>>list(filter(lambda x:x%2,range(10)))
>>> list(filter(lambda x:x%2 ,range(5)))
[1, 3]
******映射map()
>>> list(map(lambda x:x%2 ,range(5)))

[0, 1, 0, 1, 0]

这里定义了一个action函数,返回了一个lambda表达式。其中lambda表达式获取到了上层def作用域的变量名x的值。

a是action函数的返回值,a(22),即是调用了action返回的lambda表达式。

>>> def action(x):
return lambda y:x+y

>>> a = action(2)
>>> a(10)
12

这里也可以把def直接写成lambda形式。如下:

>>> b = lambda x:lambda y:x+y
>>> a = b(3)
>>> a(2)
5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值