Python:map()、reduce()、filter()的区别

文章转于:https://blog.csdn.net/goupper1991/article/details/49803355

原文博主:https://blog.csdn.net/goupper1991(小二百)

 

一)reduce()的用法:把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算  

#注意:累积计算而不是加法运算,而是序列中后面的元素与前面的元素做累积计算(结果是所有元素共同作用的结果)  

def func(x,y):  

return x*y  

print 'reduce1:',reduce(func,range(1,10))  

print 'reduce2:',reduce(func,[1,2,3])  

# print sum(range(1,101))#python内置sum()函数求和  

二)map()接收两个参数,一个是函数,一个是序列,map将传人的函数依次作用到序列的每个元素,并把结果作为新的list返回。(结果是各有各的结果)  

   1)map()中的函数传人两个参数  

def f(x,y,z,k):  

return x*y+z+k  

print '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])  

   2)map()中的函数传人一个参数  

def f(x):  

return x*x  

print 'map11:',map(f,range(1,10))  

print 'map22:',map(f,[1,2,3,4])  

三)filter()是‘筛选函数’,也接收一个函数和一个序列,filter()把传人的函数依次作用于序列的每个元素,然后根据返回值是True还是false决定保留还是丢弃该元素  

def fr(x):  

return x%2==1  

print 'filter1:',filter(fr,range(1,51))#筛选出100以内的所有奇数  

print 'filter2:',filter(fr,[1,2,3,4])  

上面代码运行结果:

reduce1: 362880
reduce2: 6
map1: [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()是将传人的函数作用在序列的第一个元素得到结果后,把这个结果继续与下一个元素作用(累积计算),最终结果是所有的元素相互作用的结果。

posted @   何永灿  阅读(930)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示