Python:高阶函数-map/reduce/filter

大数据学习路线图

【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!版权所有,侵权必究!
[返回Python教程首页]

map()

map函数接收两个参数,一个是函数f,一个是Iterator,map在Iterable的每个元素上依次执行函数f,并把结果作为新的Iterator迭代器返回。例如:

def f(x):
    return x * x

result = map(f,[1,2,3])   #返回一个Iterator迭代器,可用for循环来访问
for var in result:
    print(var)

输出结果:

1
4
9

reduce()

reduce函数接收两个参数,一个是函数f,一个是Iterator,其中函数f必须接收两个参数。reduce在Iterator的第一二个元素上执行函数f得到结果res,然后将结果res继续与第三个元素作为函数f的两个参数执行函数f,直到遍历完成。例如:

from functools import reduce
def f(x,y):
    return  x * y

result = reduce(f,[1,2,3])  #返回一个值
print(result)

输出结果:

6

注意:使用reduce函数时,需要利用from functools import reduce语句引入functools模块的reduce函数,否则会执行出错。点击第七章 模块可以学习相关知识点。

filter()

filter函数也是Python常用的内置函数,用于过滤序列。与map()类似,fiter()也是接收两个参数:一个函数和一个序列,将函数作用在序列的每一个元素上,根据函数返回值True或False,来决定是否舍弃该元素,最终返回一个迭代器,内容是原序列的子序列。例如:

def is_even(x):
    return x % 2 == 0
l = filter(is_even,[0,1,2,3,4,5])
print(l)
for var in l:   #for循环遍历迭代器l
    print(var)

执行结果:

<filter object at 0x7f14037fcc50>
0
2
4