python 函数式编程之lambda( ), map( ), reduce( ), filter( )
lambda( ), map( ), reduce( ), filter( )
1. lambda( )主要用于“行内函数”:
1 f = lambda x : x + 2 #定义函数f(x)=x+2 2 g = lambda x,y: x+y #定义函数f(x,y)=x+y
2. 列表解析:可以简化代码
1 a = [1,2,3] 2 b =[] 3 for i in a: 4 b.append(i+2) 5 6 #使用列表解析完成上述功能: 7 a = [1,2,3] 8 b = [i+2 for i in a]
3. map( ): 以下例子分别完成f(x)=x+2, f(x,y)=x*x*x+y
1 #使用map完成上述功能: 2 a = [1,2,3] 3 #c = map(function, sequence) 4 c = map(lambda x:x+2, a)
1 a = [1,2,3] 2 b = [1,1,1] 3 #c = map(function, sequence) 4 #map()函数可接受多参数 5 c = map(lambda x,y: x**3 +y , a,b)
“列表解析”本质上还是for命令,python的for命令效率并不高。map( )函数实现了相同的功能,并且效率更高。
4. reduce( ):
map( )函数是逐一遍历, reduce( )函数是递归遍历
1 # 完成一个求n以内阶乘的函数:1*2*3*4*5* ……n 2 a = lambda x,y : x*y 3 #reduce(function, sequence) 4 b = reduce(a, range(1,n+1))
5. filter( ): 过滤
1 #filter(function_or_None, sequence) 2 a = filter(lambda x: x>5 and x<8, range(10)) 3 #列表解析式完成: 4 b = [x for x in range(10) if x>5 and x<8]
日行一善, 日写一撰