python 的 map(),reduce(),filter(),返回函数,闭包
2015-03-31 19:17
786 查看
map():ap()是Python 内置的高阶函数,它接收一个函数 f 和一个list,并通过把函数f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。如果输入这样一段代码:
def f(x): return x*x print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])那么结果将是
[1, 4, 9, 10, 25, 36, 49, 64, 81]reduce():reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和map()类似,一个函数 f,一个list,但行为和map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。如果输入这样一段代码:
def f(x, y): return x + y reduce(f, [1, 3, 5, 7, 9])reduce函数将做如下计算:
先计算头两个元素:f(1, 3),结果为4; 再把结果和第3个元素计算:f(4, 5),结果为9; 再把结果和第4个元素计算:f(9, 7),结果为16; 再把结果和第5个元素计算:f(16, 9),结果为25; 由于没有更多的元素了,计算结束,返回结果25。reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算:
reduce(f, [1, 3, 5, 7, 9], 100)结果将变为125filter():filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。如果输入这样一段代码:
def is_odd(x): return x % 2 == 1 filter(is_odd, [1, 4, 6, 7, 9, 12, 17])结果:[1,7, 9, 17]Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数!
def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g
>>> x = f() # 调用f() call f()... >>> x # 变量x是f()返回的函数: <function g at 0x1037bf320> >>> x() # x指向函数,因此可以调用 call g()... # 调用x()就是执行g()函数定义的代码闭包:内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。
def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count()
这里print f1(),f2(),f3()的时候结果为9,9,9
解释:
<span style="white-space:pre"> </span>f1,f2,f3=count()的时候就已经调用了f,所以最后打印的时候i已经等于3了
这段函数可以看出count()返回一个链表,链表中的对象分别是三个函数f,f函数返回的则是int型的整数。
相关文章推荐
- Python 函数式编程(高阶函数、把函数作为参数、map()函数、reduce()函数、filter()函数、自定义排序函数、函数返回函数、闭包、匿名函数、装饰器decorator)
- Python入门 第四天(函数式编程、map、reduce、filter、排序函数、函数返回函数、闭包、匿名函数lambda)
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊
- 【语言工具】Python闭包,装饰器,生成器,偏函数,函数式编程,lamda,map,reduce,filter
- Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数
- python中map、filter、reduce 函数使用方法
- Python 特殊函数(filter, map, reduce等)
- python filter()、map()、reduce()函数解析
- Python 内建函数,filter,map, reduce
- Python内建函数之——filter,map,reduce
- python几个特别函数map filter reduce lambda
- python的lambda表达式 内建函数filter map reduce
- [Python] 内置序列函数之 filter, map, reduce, zip
- [Python] 内置序列函数之 filter, map, reduce, zip
- 【转】python的内建函数:filter,map,reduce,lambda,sorted等
- python的几个内建函数:apply,filter,map,reduce
- Python 几个内建函数: map, reduce,filter,sorted 整理
- python 内建函数filter() ,map(),reduce()
- Python中reduce、map、filter、apply、tuple函数
- Python内建函数之——filter,map,reduce