高阶函数

高阶函数指的是接收函数作为参数的函数,Python 内置的高阶函数有:map() 、reduce() 、filter()

map() 接收一个函数和一个序列作为参数,语法为 map(function, sequence),相当于依次把序列的值交给接收的函数进行处理,例子如下:

In [13]: def square(x):
   ....:     return x ** 2
   ....: 

In [14]: map(square, [1, 2, 3, 4, 5])
Out[14]: [1, 4, 9, 16, 25]
In [16]: map(lambda x: x ** 2, [1, 2, 3, 4, 5])    # map()函数通常与匿名函数结合使用
Out[16]: [1, 4, 9, 16, 25]

reduce() 接收一个函数和一个序列作为参数,语法为 reduce(function, sequence),相当于把序列的值交给接收的函数进行处理,例子如下:

In [5]: def fun(x, y):
   ...:     return x+y
   ...: 

In [6]: reduce(fun, [1, 2, 3, 4, 5])    # 把序列的值交给接收的函数进行处理,结果相当于((((1+2)+3)+4)+5)
Out[6]: 15                              # 注意是先计算前两个的值,再拿第三个序列值交给函数处理,依此类推
In [7]: reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])    # reduce()通常与匿名函数结合使用
Out[7]: 15

filter() 用于过滤序列,过滤掉序列中不符合条件的元素,结果返回一个由符合的元素组成的列表;该函数接收两个参数,第一个为函数,第二个为序列,
语法为 filter(function, sequence),表示将序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中

In [9]: def is_odd(n):
   ...:     if n % 2 == 1:
   ...:         return True
   ...:     

In [10]: filter(is_odd, range(1, 10))
Out[10]: [1, 3, 5, 7, 9]
In [12]: filter(lambda n: n % 2 == 1, range(1, 10))    # filter()通常与匿名函数结合使用
Out[12]: [1, 3, 5, 7, 9]

 

 

 

 

 

 

    

posted @ 2019-01-13 16:13  孔雀东南飞  阅读(166)  评论(0编辑  收藏  举报