版权声明: https://blog.csdn.net/csdnwgf/article/details/80412758
可以将Lambda表达式理解成一个匿名函数。这种函数经常用在那些只需要使用一次,并且又不想给函数其名字的情景中。看下面一行代码:
map(lambda x:x*x, [y for y in range(10)])
这行代码包含两个函数:map、Lambda。接下来分别介绍下这两个函数。
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等。这种能够接受一个函数作为参数的函数叫做高阶函数,是来自函数式编程的思想。