Python_高阶函数
可接收其他函数作为参数的函数称为高阶函数, map/reduce/filter 是 Python 中较为常用的内建高阶函数.
1 | def higher_order_function(fun, arr): |
[2, 4, 6, 8]
[1, 4, 9, 16]
map
map 函数的使用形式如下:
map(function, sequence)
解释:对 sequence 中的 item 依次执行 function(item),并将结果组成一个 List 返回,也就是:
[function(item1), function(item2), function(item3), …]
1 | def double(x): |
[1, 4, 9, 16]
[1, 4, 9, 16]
[10, 25]
reduce
reduce 函数的使用形式如下:
reduce(function, sequence[, initial])
解释:先将 sequence 的前两个 item 传给 function,即 function(item1, item2),函数的返回值和 sequence 的下一个 item 再传给 function,即 function(function(item1, item2), item3),如此迭代,直到 sequence 没有元素,如果有 initial,则作为初始值调用。
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
1 | from functools import reduce |
24
120
filter
filter 函数用于过滤元素,它的使用形式如下:
filter(function, sequnce)
解释:将 function 依次作用于 sequnce 的每个 item,即 function(item),将返回值为 True 的 item 组成一个 List/String/Tuple (取决于 sequnce 的类型,python3 统一返回迭代器) 返回。
1 | even_num = list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6])) |
[2, 4, 6]
注意在 python2 和 python3 中,map/reduce/filter 的返回值类型有所不同,python2 返回的是基本数据类型,而 python3 则返回了迭代器.