高阶函数map()、filter()和reduce()
初学python的时候,对于含有map()
、filter()
和reduce()
的代码,总有着莫名的敬畏,因为在学习Python之前,有了解过大数据,大数据中有个MapReduce的概念,没搞懂MapReduce,所以在学习Python的时候,看到map和reduce就脑阔疼。而且,很多Python入门书并不谈这三个函数,进阶书又直接运用这三个函数,去互联网找资料吧,很多博客写的不清不楚的,罗里吧嗦讲了一大堆,还是不知道这三个函数什么玩意儿。现在临到我来写了,,,尽量写明了一点吧。
看山易,近山难
map() 函数
map(function,iterable)
,function
是函数,iterable
是可迭代对象。map()函数的意思是:对iterable
中每个元素都应用function
。举个例子:
def square1(x):
'''平方将传来的数'''
return x**2
l1 = [1,2,3,4,5]
map(sqaure1,l1) # 将l1中每个元素平方处理
map()函数会返回一个可遍历的集合,可以使用list()
函数转换为列表。
list(map(square1,l1))
filter() 函数
filter(function,iterable)
,对iterable
中每个元素都使用function
判断。举例:
li2 = list(filter(lambda x: x % 2 == 0,l1)) # 筛出l1中所有偶数
reduce()函数
reduce(function,iterable)
,对iterable
中每个元素以及上一次调用的返回结果,运用function
进行处理。注意:在Python2中,reduce()
是内置函数,而在Python3中放到了functools
模块中。举例:
# Python 3
from functools import reduce
result1 = reduce(lambda x,y : x*y,l1) # 1*2*3*4*5 = 120
网友评论