作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!
链接:http://www.cnblogs.com/vamei/archive/2012/07/10/2582772.html
笔记:
#第17讲 函数对象 #lambda函数 func = lambda x,y: x + y print (func(3,4)) #lambda生成一个函数对象,函数参数为x,y,返回值为x+y #lambda 赋值给func def func(x,y): return x + y def test(f,a,b): print ('test') print (f(a,b)) test(func,3,5) #test(func,3,5)把第一个参数func(其实是函数),赋给f,f就有了func的功能 test((lambda x,y: x**2 + y),6,9) #把lambda x,y :x平方+y 赋给f,执行x平方+y,36+9=45 #输出:45 #map()函数 #map()是python的内置函数,第一个参数是函数对象 re = map((lambda x: x+3),[1,3,5,6]) #map()有2个参数,第一个是lambda函数,一个是list #map()功能是将函数对象依次作用于表的每一个元素,然后返回储存到re中 re #输出是<map object at 0x0000013539E62198> #用list转换 list(re) #输出:[4, 6, 8, 9] re = map((lambda x,y: x+y),[1,2,3],[6,7,9]) #map()将每次从两个表中分别取出一个元素,带入lambda所定义的函数,执行加法运算 #输出:[7,9,12] #filter()函数 #这个函数 将作为参数的函数对象作用于元素,然后返回值是True,这个元素存储在表中 #同样,python2 3有差异 def func(a): if a >100: return True else: return False print (filter(func,[10,56,100,500])) #python3 输出是循环对象,就是object at #用list转换 list(filter(func,[10,56,100,500])) #输出就是[500] #func的功能,for循环,对a赋值,大于100返回true,否则返回false #filter功能,将返回是true的值,存储在表中 #用print 打印是对象,list转换就看到了只有500符合,就打印500 #reduce()函数 #python3将reduce函数放在了functools中,需要引入 from functools import reduce #reduce()函数可以接受两个参数,是累进的将函数作用于各个参数,累进,就是累加 累乘 reduce(lambda x, y: x + y, [2, 3, 4, 5, 6], 1) #reduce 将list里面取出两个变量,传递给lambad()函数x y,赋值给x y,进行相加运算 #reduce 将返回值3 又作为lambda()函数第一个变量,list 中4 的变量作为 lambda的第二个变量,然后相加 #依次调用lambda函数,每次lambda函数的第一个参数是上一次运算结果,而第二个参数为表中的下一个元素,直到表中没有剩余元素 #执行的是一个累加运算,前2个数的和,和下一个数相加
最后回顾一下:
map()函数,list 的每一个元素,每个执行函数————>作者原话:map()的功能是将函数对象依次作用于表的每一个元素
filter()函数,返回为True的值 的元素,储存在表中————>函数对象返回的是True,则该次的元素被储存于返回的表中
reduce()函数,每次获取2个参数变量,然后2个变量执行函数,返回的值作为下一次的第一个变量,进行累进————>reduce可以累进地将函数作用于各个参数,接收两个参数
浙公网安备 33010602011771号