python中的三个内置函数map,reduce,filter
2014-01-05 20:23
423 查看
先介绍下python中的三个内置函数map,reduce,filter
1 map
对sequence中的item依次执行function(item),执行结果输出为list
2 reduce
对sequence中的item顺序迭代调用cunction,函数必须要有2个参数。要是有第3个参数,则表示初始值,可以继续调用初始值,返回一个值
3 filter
对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple返回,False则退出(0),进行过滤
上面的这些例子中都用到了一个lambda表达式,下面举个例子,更多信息见这里
例:实现5!+4!+3!+2!+1!
转载自http://www.cnblogs.com/zhoujinyi/archive/2013/06/07/3121976.html
1 map
map(...) map(function, sequence[, sequence, ...]) -> list
对sequence中的item依次执行function(item),执行结果输出为list
>>> map(str, range(5)) #对range(5)各项进行str操作 ['0', '1', '2', '3', '4'] #返回列表 >>> def add(n):return n+n ... >>> map(add, range(5)) #对range(5)各项进行add操作 [0, 2, 4, 6, 8] >>> map(lambda x:x+x,range(5)) #lambda 函数,各项+本身 [0, 2, 4, 6, 8] >>> map(lambda x:x+1,range(10)) #lambda 函数,各项+1 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> map(add,'zhoujy') ['zz', 'hh', 'oo', 'uu', 'jj', 'yy'] #想要输入多个序列,需要支持多个参数的函数,注意的是各序列的长度必须一样,否则报错: >>> def add(x,y):return x+y ... >>> map(add,'zhoujy','Python') ['zP', 'hy', 'ot', 'uh', 'jo', 'yn'] >>> def add(x,y,z):return x+y+z ... >>> map(add,'zhoujy','Python','test') #'test'的长度比其他2个小 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: add() takes exactly 2 arguments (3 given) >>> map(add,'zhoujy','Python','testop') ['zPt', 'hye', 'ots', 'uht', 'joo', 'ynp']
2 reduce
reduce(...) reduce(function, sequence[, initial]) -> value
对sequence中的item顺序迭代调用cunction,函数必须要有2个参数。要是有第3个参数,则表示初始值,可以继续调用初始值,返回一个值
>>> def add(x,y):return x+y ... >>> reduce(add,range(10)) #1+2+3+...+9 >>> reduce(add,range(11)) #1+2+3+...+10 >>> reduce(lambda x,y:x*y,range(1,3),5) #lambda 函数,5是初始值, 1*2*5 >>> reduce(lambda x,y:x*y,range(1,6)) #阶乘,1*2*3*4*5 >>> reduce(lambda x,y:x*y,range(1,6),3) #初始值3,结果再*3 >>> reduce(lambda x,y:x+y,[1,2,3,4,5,6]) #1+2+3+4+5+6
3 filter
filter(...) filter(function or None, sequence) -> list, tuple, or string
对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple返回,False则退出(0),进行过滤
>>> def div(n):return n%2 ... >>> filter(div,range(5)) #返回div输出的不等于0的真值 [1, 3] >>> filter(div,range(10)) [1, 3, 5, 7, 9] >>> filter(lambda x : x%2,range(10)) #lambda 函数返回奇数,返回列表 [1, 3, 5, 7, 9] >>> filter(lambda x : not x%2,range(10)) [0, 2, 4, 6, 8] >>> def fin(n):return n!='z' #过滤'z' 函数,出现z则返回False ... >>> filter(fin,'zhoujy') #'z'被过滤 'houjy' >>> filter(lambda x : x !='z','zhoujy') #labmda返回True值 'houjy' >>> filter(lambda x : not x=='z','zhoujy') #返回:字符串 'houjy'
上面的这些例子中都用到了一个lambda表达式,下面举个例子,更多信息见这里
>>> a=lambda x:x+3 >>> a(2) 5 >>> a=lambda x,y:x+y >>> a(2,3) 5
例:实现5!+4!+3!+2!+1!
#!/usr/bin/env python #-*- coding:utf-8 -*- def add_factorial(n): empty_list=[] #声明一个空列表,存各个阶乘的结果,方便这些结果相加 for i in map(lambda x:x+1,range(n)): #用传进来的变量(n)来生成一个列表,用map让列表都+1,eg:range(5) => [1,2,3,4,5] a=reduce(lambda x,y:x*y,map(lambda x:x+1,range(i))) #生成阶乘,用map去掉列表中的0 empty_list.append(a) #把阶乘结果append到空的列表中 return empty_list if __name__ == '__main__': import sys #2选1 #(一) try: n = input("Enter a Number(int) : ") result=add_factorial(n) #传入变量 print reduce(lambda x,y:x+y,result) #阶乘结果相加 except (NameError,TypeError): print "That's not a Number!" #(二) # result = add_factorial(int(sys.argv[1])) #传入变量 # print reduce(lambda x,y:x+y,result) #阶乘结果相加
转载自http://www.cnblogs.com/zhoujinyi/archive/2013/06/07/3121976.html
相关文章推荐
- 转 python 的几个内置函数(lambda ,zip, filter, map, reduce )用法
- python几个内置函数之-filter,map,reduce
- Python常用内置函数整理(lambda,reduce,zip,filter,map)
- Python【map、reduce、filter】内置函数使用说明
- python一些内置函数——filter、map、reduce
- python内置函数map/reduce/filter
- python学习六:异常处理、map/reduce/filter内置函数、python集合(set)类型、元组转列表
- python 的几个内置函数(lambda ,zip, filter, map, reduce )用法
- python 内置函数 map、 reduce 、filter
- Python常用内置函数介绍【filter,map,reduce,apply,zip】
- python几个内置函数之-filter,map,reduce
- python 中map、reduce、zip、filter内置函数作用说明
- python 内置函数filter, lambda, map, reduce
- python内置函数map/reduce/filter
- Python【map、reduce、filter】内置函数使用说明
- Python 中 map,reduce,和filter 内置函数的方法
- python学习笔记-Day04-第三部分(内置函数,map,filter,reduce,yield)
- Python常用内置函数介绍【filter,map,reduce,apply,zip】
- python 的几个内置函数(lambda ,zip, filter, map, reduce )用法