百科问答小站 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和Go语言都这么火,你们觉得哪个前景更好? 
  为什么自学Python看不进去? 
  使用 Visual Studio 开发的情况下 C# 的编程效率能否和 Python、Ruby 媲美? 
  为什么很多人都说 Python 简单? 
  对于一个开源 Python 量化交易平台项目的建议有哪些? 
  Python在数据科学领域能否完全取代R? 
  python是用C实现的,Java是用C++实现的,那为什么不直接用C或C++呢? 
  有没有简单一点的 Python 小例子或小项目? 
  求十亿内所有质数的和,怎么做最快? 
  异常处理(exception handling)和错误处理(error handling)有什么区别? 

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





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利