map、reduce、filter是常见的的python函数,初学者会较难理解,这里详细解释下。
map是映射、reduce是聚合,filter是筛选
map()方法会将 一个函数 映射到序列的每一个元素上,生成新序列,包含所有函数返回值。
也就是说序列里每一个元素都被当做x变量,放到一个函数f(x)里,其结果是f(x1)、f(x2)、f(x3)......组成的新序列。
如何使用map函数?
map(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相比map稍复杂点
reduce的工作过程是 :在迭代序列的过程中,首先把 前两个元素(只能两个)传给 函数,函数加工后,然后把 得到的结果和第三个元素 作为两个参数传给函数参数, 函数加工后得到的结果又和第四个元素 作为两个参数传给函数参数,依次类推。
reduce函数怎么用?
reduce(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编程、求职问题欢迎来提问哦!
怎么没人提《圣斗士星矢》啊?
这个系列作品的特色不就是回回都是一部的戏就半天时间么?
黄道十二宫篇:纱织中了天箭座的箭,必须12小时内突破圣域十二宫。
北欧篇:奥丁代言者希露达被海皇戒指蛊惑令冰川融化,纱织代替希露达阻止冰川融化但是只能坚持12小时,必须在时限内摘下希露达的戒指。
海皇篇:纱织代替人类承受波塞冬的洪水,应该也是只能支撑一天之内的时间。
冥王十二宫篇:被哈迪斯复活的圣斗士要在12小时内取下雅典娜的首级,实际目的则是为了雅典娜去冥界并且唤醒女神圣衣,12小时候被复活的圣斗士们就消失了。
冥界篇:记不清打了多长时间,但从纱织被塞到缸里抽血开始到解决应该也是一天之内。
黄金魂:在本篇剧情里有好几天,但对应到冥界篇时间仅仅发生在冥界篇12黄金击破叹息之墙到打死神之间。
火星篇:马尔斯获得阿丽娅的权杖后建立起巴别塔吸引火星,会在12小时内毁灭地球,主角们必须在12小时内突破新十二宫。
土星篇:这篇好像打了很多天……