Lambda表达式是什么?

版权声明: https://blog.csdn.net/csdnwgf/article/details/80412758

可以将Lambda表达式理解成一个匿名函数。这种函数经常用在那些只需要使用一次,并且又不想给函数其名字的情景中。看下面一行代码:

map(lambda x:x*x, [y for y in range(10)])

这行代码包含两个函数:mapLambda。接下来分别介绍下这两个函数。
map(f, a)函数指的是将a(列表)中的每个元素都套用一下f函数。使用这个map(f, a)函数有个需要注意的地方:

python2中map函数返回的是一个列表(list),但在python3中返回的一个iterators(迭代器),需要通过list()方法将迭代器转化为list。

>>> def f(x, y): return (x, y)  
>>> l1 = [ 0, 1, 2, 3, 4, 5, 6 ]  
>>> l2 = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ] 
>>> map(f, l1, l2)

Python2中返回的结果为:

[(0, 'Sun'), (1, 'Mon'), (2, 'Tue'), (3, 'Wed'), (4, 'Thu'), (5, 'Fri'), (6, 'Sat')]

Python3中返回的结果为:

<map object at 0x00000000021DA860>

使用list()方法,即可返回list列表:

>>> list(map(f1, l1, l2))  
[(0, 'Sun'), (1, 'Mon'), (2, 'Tue'), (3, 'Wed'), (4, 'Thu'), (5, 'Fri'), (6, 'Sat')]

我们在上面有说过Lambda表达式也就是匿名函数。它本质上就是一个函数,它所抽象出来的东西是一组运算。
lambda 参数:操作代表的是对参数进行”:”后面的操作。则

map(lambda x:x*x, [y for y in range(10)])

代表的就是对列表[0,1,2,3,4,5,6,7,8,9]内的每个元素均进行“平方操作”,然后将执行的结果组合成一个列表(python2)或者迭代器(python3)。

总结:Python之中能用到Lambda表达式的地方还有很多,比如函数filter、reduce等。这种能够接受一个函数作为参数的函数叫做高阶函数,是来自函数式编程的思想。

猜你喜欢

转载自blog.csdn.net/csdnwgf/article/details/80412758