百科问答小站 logo
百科问答小站 font logo



python如何理解map,reduce,filter? 第1页

  

user avatar   pydatalysis 网友的相关建议: 
      

map、reduce、filter是常见的的python函数,初学者会较难理解,这里详细解释下。

map是映射、reduce是聚合,filter是筛选


map

map()方法会将 一个函数 映射序列的每一个元素上,生成新序列,包含所有函数返回值。

也就是说序列里每一个元素都被当做x变量,放到一个函数f(x)里,其结果是f(x1)、f(x2)、f(x3)......组成的新序列。

如何使用map函数?

       map(function_to_apply, list_of_inputs)       
  • function_to_apply:代表函数
  • list_of_inputs:代表输入序列
注意:python3中 map函数返回的是迭代器

大多数时候,我们要把列表中所有元素一个个地传递给一个函数,并收集输出。

比方说:

       items = [1, 2, 3, 4, 5] # 列表 squared = [] for i in items:     squared.append(i**2)     

map函数可以让我们用一种简单而漂亮得多的方式来实现:

       items = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, items))     

上面使用了匿名函数,也可以自定义函数:

       items = [1, 2, 3, 4, 5] def f(x):     return x**2 squared = list(map(f, items))     

reduce

reduce相比map稍复杂点

reduce的工作过程是 :在迭代序列的过程中,首先把 前两个元素(只能两个)传给 函数,函数加工后,然后把 得到的结果和第三个元素 作为两个参数传给函数参数, 函数加工后得到的结果又和第四个元素 作为两个参数传给函数参数,依次类推。

reduce函数怎么用?

       reduce(function, iterable[, initializer])      
  • function:代表函数
  • iterable:序列
  • initializer:初始值(可选)
与map不同,reduce不可以直接使用,需要用from functools import reduce导入

比如说我要求10的阶乘,就可以用reduce做:

       # 导入reduce from functools import reduce  # 定义函数 def f(x,y):     return x*y # 定义序列,含1~10的元素 items = range(1,11) # 使用reduce方法 result = reduce(f,items) print(result)     

END


Ps:六年大数据从业经验。有任何数据分析、Python编程、求职问题欢迎来提问哦!


user avatar   gashero 网友的相关建议: 
      

怎么没人提《圣斗士星矢》啊?

这个系列作品的特色不就是回回都是一部的戏就半天时间么?

黄道十二宫篇:纱织中了天箭座的箭,必须12小时内突破圣域十二宫。

北欧篇:奥丁代言者希露达被海皇戒指蛊惑令冰川融化,纱织代替希露达阻止冰川融化但是只能坚持12小时,必须在时限内摘下希露达的戒指。

海皇篇:纱织代替人类承受波塞冬的洪水,应该也是只能支撑一天之内的时间。

冥王十二宫篇:被哈迪斯复活的圣斗士要在12小时内取下雅典娜的首级,实际目的则是为了雅典娜去冥界并且唤醒女神圣衣,12小时候被复活的圣斗士们就消失了。

冥界篇:记不清打了多长时间,但从纱织被塞到缸里抽血开始到解决应该也是一天之内。

黄金魂:在本篇剧情里有好几天,但对应到冥界篇时间仅仅发生在冥界篇12黄金击破叹息之墙到打死神之间。

火星篇:马尔斯获得阿丽娅的权杖后建立起巴别塔吸引火星,会在12小时内毁灭地球,主角们必须在12小时内突破新十二宫。

土星篇:这篇好像打了很多天……




  

相关话题

  Python 程序如何高效地调试? 
  Python/Pandas如何处理百亿行,数十列的数据? 
  一行代码可以做什么? 
  Python如何将正则匹配到的多个位置替换成为不同内容? 
  Python的哪个Web框架学习周期短,学习成本低? 
  如何理解“from xxx import *这种写法会给你带来无穷无尽的噩梦?”? 
  如何零基础入门 Python? 
  一个程序员多年累计编写一百万行代码是什么体验? 
  学 Python 都用来干嘛的? 
  开源社区很多开源框架都有Rails的影子,为什么不用Rails呢? 

前一个讨论
35 岁以上的 IT 开发工作者都去哪里了?
下一个讨论
华南师范大学预聘制是怎样一种存在?





© 2025-04-04 - tinynew.org. All Rights Reserved.
© 2025-04-04 - tinynew.org. 保留所有权利