1、概念介绍
python 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
2、语法
语法:lambda [arg1 [,arg2,.....argn]]: expression
lambda x, y : x * y
3、Reduce
传给reduce中的函数func() (必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。
from functools import reduce
l = [1,2,3,4,5]
print(reduce(lambda x,y: x+y, l))
# 这里代表着,把l中的值,一个个放进lamda的x,y中
# 如果你给出一个初始值,可以放在l后面
print(reduce(lambda x,y: x+y, l, 10))
# 这样,x开始的时候被赋值为10,然后依次把l中的值放进来
4、Map
格式:map(func, seq1[, seq2...] )
Python函数式编程中的map()函数是将func作用于seq中的每一个元素,并用一个列表给出返回值。
l = [1,2,3]
new_list = list(map(lambda i: i+1, l))
print(new_list)
>>> [2,3,4]
# 我们也可以把两个数组搞成一个单独的数组
l = [1,2,3]
l2 = [4,5,6]
new_list = list(map(lambda x,y: x+y, l, l2))
print(new_list)
>>>[5, 7, 9]
5、Filter
和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
l = [100, 20, 24, 50, 110]
new = list(filter(lambda x: x<50, l))
print(new)
>>> [20, 24]