[PYTHON]map filter reduce 使用简介

Map, filter,reduce 都是针对可迭代类型(iterable)的循环操作,返回想要的结果。三者使用上有相似性,功能不太相同。

三个函数都需要两个参数,第一个参数是函数名,是指要针对每个元素做的操作,第二个参数为可迭代的序列。

先来看一个例子,假设一个list mylist=[1,2,3,4,5],我们要把每个元素分别乘2输出,正常方法如下:

mylist=[1,2,3,4,5]
result=[]
i=0
while i < len(mylist):
    result.append(mylist[i]*2)
    i+=1
print(result)

我们使用循环完成了上述功能,但是为了使代码简洁,我们可以通过使用map,而不是用循环。我们只需使用3行代码就可以完成上述功能。

mylist=[1,2,3,4,5]
out=list(map(lambda x:x*2, mylist))
print(out)

所以,map完成的是将mylist中每个元素分别带入lambda函数中进行计算,最终仍然返回list类型的结果,即[2, 4, 6, 8, 10]

类似,filter也是依次将每个元素带入进行计算,只不过filter返回的是运行结果为真的元素。假设我们想要打印出list中小于4的元素,可以使用如下代码。最终只打印出了1,2,3

mylist=[1,2,3,4,5]
out=list(filter(lambda x: x<4, mylist))
print(out)

[1, 2, 3]

Reduce也是类似,只不过reduce返回的不是元素,而是累计计算各个元素的运行结果。

假设我们要计算list中各个元素的和,可以使用以下代码:最终打印15

mylist=[1,2,3,4,5]
out=reduce(lambda x,y : x+y, mylist)
print(out)

[心情]张开明眸,愿一切美好为你驻足

农历新年的第一天,你可以怀念往事,并将所有的挂念一一珍藏。转眼,霜消冰释,不如,张开明眸,品物向春,让凡俗的纷扰渐渐消散。唯愿花常开,梦常在,知己永不负……

新春,给你第一次的每日祝福:“愿你有一个灿烂前程 / 愿你有情人终成眷属 / 愿你在尘世获得幸福。”更愿一切美好为你而驻足

文 / 肖尧

来自微信公众号”为你读诗”