lambda函数的特性

时间:2023-03-09 09:02:47
lambda函数的特性

lambda表达式可以理解为一种抽象的函数实现方法,这种方式只有最基本的三个步骤:给与参数,表达式实现,返回结果。这种方式非常干净,减少了内存的使用,整个程序少了函数的污染,代码格式也会更为简练。但在python中的使用是受限的,只能进行简单的表达式计算。

下面简单给一个知乎扒的代码示范一下:

func = (lambda x:x**i for i in xrange(4))
for i in func:
i(4)
1
4
16
64

上面代码的含义很简单,for i in xrange(4)会返回一个列表[0,1,2,3],而func对象实际上是一个迭代器iterator,对其遍历之后就会返回这样一个结果:

(lambda x:x**0)
(lambda x:x**1)
(lambda x:x**2)
(lambda x:x**3)

然后在进行lambda表达式的计算。

也就是说:

i(0) = (lambda x:x**0)
i(1) = (lambda x:x**1)
i(2) = (lambda x:x**2)
i(3) = (lambda x:x**3)

最后自然就会返回1,4,16,64这样一个结果。

再举一个map,filter函数与lambda函数结合使用的例子:

>>> l = ['foo', 'bar', 'far']
>>> map(lambda x: x, l)
['foo', 'bar', 'far']
>>> filter(lambda x: 'f' in x, l)
['foo', 'far']
>>> map(lambda x: x.upper(), filter(lambda x: 'f' in x, l))
['FOO', 'FAR']

map(a,b)会在a,b之间建立一个映射关系,将a实际上是b中一个元素,lambda函数会以a为参数进行表达式运算,之后再返回结果。

同理filter也是如此,只不过filter只会返回lambda函数返回值为真的元素。