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)