您的位置:首页 > 编程语言 > Python开发

python中的高阶函数map(),reduce(),filter()的区别

2015-11-12 18:52 706 查看
#reduce()的用法:把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算#wh注意:累积计算而不是加法运算,而是序列中后面的元素与前面的元素做累积计算(结果是所有元素共同作用的结果)def func(x,y):return x*yprint 'reduce1:',reduce(func,range(1,10))print 'reduce2:',reduce(func,[1,2,3])# print sum(range(1,101))#python内置sum()函数求和#map()接收两个参数,一个是函数,一个是序列,map将传人的函数依次作用到序列的每个元素,并把结果作为新的list返回。(结果是各有各的结果)#map()中的函数传人两个参数def f(x,y,z,k):return x*y+z+kprint 'map1:',map(f,range(1,10),range(2,11),range(1,10),[1,2,3,4,5,6,7,8,9])print 'map2:',map(f,[1,2,3,4],[1,72,35,4],[1,2,3,4],[1,72,35,4])
#map()中的函数传人一个参数def f(x):return x*xprint 'map11:',map(f,range(1,10))print 'map22:',map(f,[1,2,3,4])#filter()是‘筛选函数’,也接收一个函数和一个序列,filter()把传人的函数依次作用于序列的每个元素,然后根据返回值是True还是false决定保留还是丢弃该元素def fr(x):return x%2==1print 'filter1:',filter(fr,range(1,51))#筛选出100以内的所有奇数print 'filter2:',filter(fr,[1,2,3,4])
上面代码运行结果:reduce1: 362880reduce2: 6map1: [4, 10, 18, 28, 40, 54, 70, 88, 108]map2: [3, 218, 143, 24]map11: [1, 4, 9, 16, 25, 36, 49, 64, 81]map22: [1, 4, 9, 16]filter1: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]filter2: [1, 3]map()和reduce()的区别:1.map()中的函数(是指map()两个参数中的函数中的参数,而不是map()的参数)可以传人一个或者多个参数,reduce()中的函数必须接收两个参数2.map()是将传人的函数依次作用到序列的每个元素,每个元素都是独自被函数“作用”一次,reduce()是将传人的函数作用在序列的第一个元素得到结果后,把这个结果继续与下一个元素作用(累积计算),最终结果是所有的元素相互作用的结果。新手学习python,看网上资料有点晕,所以自己总结了一下这三个函数作为笔记。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python filter 函数 map reduce