python函数式编程
版本:python2.7.6
lambda filter() map() reduce()
三点:输入,作用,输出
1、lambda
lambda 参数:表达式 返回值为表达式的值
1 >>> f=lambda x,y:x*y 2 >>> f(4,6) 3 24
参数匿名
1 >>> L=[lambda x,y:x+y+1,lambda x,y:x+y+2,lambda x,y:x+y+3] 2 >>> for f in L: 3 ... print f(1,2) 4 ... 5 4 6 5 7 6 8 >>> L[0](2,3) 9 6 10 >>> L[0] 11 <function <lambda> at 0xb74e879c>
列表L 中的每个元素都是一个有两个参数的匿名函数。
2、map()
输入两个参数:函数和可迭代对象
作用:对可迭代对象每个元素执行函数的操作
输出:返回结果值的迭代对象
返回迭代器(每次取一个结果值)(python3.4.3)
python2.7.6
1 >>> def F(a): 2 ... return a**2 3 ... 4 >>> map(F,[1,2,3,4]) 5 [1, 4, 9, 16]
pthon3.4.3
1 >>> def F(a): 2 ... return a**2 3 ... 4 >>> map(F,[1,2,3,4]) 5 <map object at 0xb70e2b2c> 6 >>> q=map(F,[1,2,3,4]) 7 >>> list(q) 8 [1, 4, 9, 16]
3、filter()
输入:一个函数和一个序列。
作用:过滤数列,函数作用于序列每个元素,返回True保留,False则丢弃。
输出:输出过滤后的数列
输出迭代器(python3.4.3)
python2.7.6
1 >>> filter(lambda x:x%2==1,[1,2,3,4,5,6,7]) 2 [1, 3, 5, 7]
python3.4.3
1 >>> filter(lambda x:x%2==1,[1,2,3,4,5,6,7]) 2 <filter object at 0xb6ff3bcc> 3 >>> f=filter(lambda x:x%2==1,[1,2,3,4,5,6,7]) 4 >>> list(f) 5 [1, 3, 5, 7]
4、reduce()函数 (python3中移到functools包中)
输入:函数和序列,函数必须接受两个参数
作用:前两个参数执行函数的运算,得到结果再与下一个参数运算。
输出:所有参数的运算值
1 >>> reduce(lambda x,y:x+y,[1,2,3,4]) 2 10
pthon3.4.3
1 >>> from functools import reduce 2 >>> reduce(lambda x,y:x+y,[1,2,3,4]) 3 10