[转]Python 中的 lambda,filter,map,reduce,apply
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转]Python 中的 lambda,filter,map,reduce,apply相关的知识,希望对你有一定的参考价值。
1. lambda
1. 基本形式:
函数名=lambda args1,args2,...,argsn:expression
与C语言中的宏定义类似
2. Code
1 isodd = lambda x: x%2==0 2 pow2 = lambda x: x<<1
2. filter
ans=filter(function,array)相当于一个过滤函数,这里的function的返回值为布尔型,array中满足function的元素留下。
1 array=[1,2,3,4,5,6,7] 2 isodd = lambda x: x%2==0 3 ans=filter(isodd,array) 4 print ans
3. 函数原型
1 def filter(function,array): 2 ans=[] 3 for each in array: 4 if function(each) is True: 5 ans.append(each) 6 return ans
3. map
1. 基本形式
map(function,args),对序列args进行function操作,得到结果序列。
1 array=[1,2,3,4,5,6,7] 2 pow2 = lambda x: x<<1 3 ans1=map(pow2,array) 4 print ans1
3. 函数原型
1 def map(function,array): 2 ans=[] 3 for each in array: 4 ans.append(fun(each)) 5 return ans
4. reduce
reduce(function,array,initval) function是一个带有两个参数的函数,array是待处理的序列,initval是初始值
1 array=[1,2,3,4,5,6,7] 2 add = lambda x,y: x+y 3 ans2= reduce(add,array,0) 4 print ans
3. 函数原型
1 def reduce(function,array,initval): 2 tmp = list(array) 3 if initval is None: 4 ans = list.pop(0) #取列表的第一个元素,并删除 5 else: 6 ans =initval 7 for each in tmp: 8 ans = function(ans,each) 9 return ans; 10 11 ans2= reduce(add,array,0)
5. apply
apply(function,(function的参数))是用来替代function的,
1 add = lambda x,y: x+y 2 apply(add,(1,2))
以上是关于[转]Python 中的 lambda,filter,map,reduce,apply的主要内容,如果未能解决你的问题,请参考以下文章