版本:python2.7.6
lambda filter() map() reduce()
三点:输入,作用,输出
1、lambda
lambda 参数:表达式 返回值为表达式的值
1 >>> f=lambda x,y:x*y2 >>> 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 inL:3 ... print f(1,2)4 ...5 4
6 5
7 6
8 >>> L[0](2,3)9 6
10 >>> L[0]11 at 0xb74e879c>
列表L 中的每个元素都是一个有两个参数的匿名函数。
2、map()
输入两个参数:函数和可迭代对象
作用:对可迭代对象每个元素执行函数的操作
输出:返回结果值的迭代对象
返回迭代器(每次取一个结果值)(python3.4.3)
python2.7.6
1 >>> defF(a):2 ... return a**2
3 ...4 >>> map(F,[1,2,3,4])5 [1, 4, 9, 16]
pthon3.4.3
1 >>> defF(a):2 ... return a**2
3 ...4 >>> map(F,[1,2,3,4])5
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
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 >>> fromfunctools import reduce2 >>> reduce(lambda x,y:x+y,[1,2,3,4])3 10