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

 

posted @ 2016-03-06 10:54  hb91  阅读(213)  评论(0编辑  收藏  举报