lambda函数也叫匿名函数,函数没有具体的名称。
语法:lambda argument_list: expression
- argument_list是参数列表,相当于函数定义中的参数列表 def(a, b=1, *args, **kwargs)
- expression是关于参数的表达式。相当于函数中的函数体,并且表达式只能是单行的,可以为None
部分Python内置函数接收函数作为参数
filter函数。此时lambda函数用于指定过滤列表元素的条件。
print(list(filter(lambda x: x % 3 == 0, [1, 2, 3])))
结果是[3]。
注意:在python3中,filter, map, zip等返回可迭代的对象,返回的仅仅是一个元素,并不是一个列表,所以结果前需要使用 list
sorted函数。此时lambda函数用于指定对列表中所有元素进行排序的准则。
print(sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x)))
结果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。
map函数。此时lambda函数用于指定对列表中每一个元素的共同操作。
print(map(lambda x: x+1, [1, 2,3]))
结果是[2, 3, 4]。
reduce函数。此时lambda函数用于指定列表中两两相邻元素的结合条件。
from functools import reduce print(reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5]))
将列表 [1, 2, 3, 4, 5]中的元素从左往右两两以逗号分隔的字符的形式依次结合起来,
结果是'1, 2, 3, 4, 5'。
注意:reduce()函数在python2是内置函数,从python3开始移到了 functools 模块。
https://www.jianshu.com/p/039756507e95