百科问答小站 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小时内突破新十二宫。

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




  

相关话题

  爬虫是不是用 Node.js 更好? 
  如何零基础入门 Python? 
  创业公司选择 .NET 技术栈究竟比选 Java/Python 贵多少钱? 
  如何看待海淀妈妈们认为Python是儿童才学的低端编程? 
  怎么自学python,大概要多久? 
  Python和Go语言都这么火,你们觉得哪个前景更好? 
  不同编程语言的程序员之间有鄙视链么? 
  在编程语言中,循环语句为何选择 while 而不是 when 作为关键词? 
  python中的lambda 和java中的lambda有什么不同? 
  零基础如何学爬虫技术? 

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





© 2024-12-22 - tinynew.org. All Rights Reserved.
© 2024-12-22 - tinynew.org. 保留所有权利