[转]Python 中的 lambda,filter,map,reduce,apply

时间:2023-03-08 17:58:27

1. lambda

1. 基本形式:

函数名=lambda args1,args2,...,argsn:expression
与C语言中的宏定义类似

2. Code

 isodd = lambda x: x%2==0
pow2 = lambda x: x<<1

2. filter

1. 基本形式

ans=filter(function,array)相当于一个过滤函数,这里的function的返回值为布尔型,array中满足function的元素留下。

2. Code

 array=[1,2,3,4,5,6,7]
isodd = lambda x: x%2==0
ans=filter(isodd,array)
print ans

3. 函数原型

 def filter(function,array):
ans=[]
for each in array:
if function(each) is True:
ans.append(each)
return ans

3. map

1. 基本形式

map(function,args),对序列args进行function操作,得到结果序列。

2. Code

 array=[1,2,3,4,5,6,7]
pow2 = lambda x: x<<1
ans1=map(pow2,array)
print ans1

3. 函数原型

 def map(function,array):
ans=[]
for each in array:
ans.append(fun(each))
return ans

4. reduce

1. 函数原型

reduce(function,array,initval) function是一个带有两个参数的函数,array是待处理的序列,initval是初始值

2. Code

 array=[1,2,3,4,5,6,7]
add = lambda x,y: x+y
ans2= reduce(add,array,0)
print ans

3. 函数原型

 def reduce(function,array,initval):
tmp = list(array)
if initval is None:
ans = list.pop(0) #取列表的第一个元素,并删除
else:
ans =initval
for each in tmp:
ans = function(ans,each)
return ans; ans2= reduce(add,array,0)

5. apply

1. 基本形式

apply(function,(function的参数))是用来替代function的,

2. Code

 add = lambda x,y: x+y
apply(add,(1,2))