高阶函数

2021-03-12 14:50:01 浏览数 (1)

高阶函数

高阶函数语法

其实高阶函数是函数式编程里面的一些概念,更深入的讲其实是来源于数学里面的一些概念,这里用Python来说明一些常见的概念,如果感兴趣可以学习别的函数式编程的语言。

代码语言:javascript复制
def func(g,arr):
    return [g(x) for x in arr]

在以上的代码中,func是一个高阶函数,它接收两个参数,第一个参数是函数,第二个函数是数组,func的作用是将函数g逐个的作用于数组arr上,并返回一个新的数组,并且返回一个新的数组,比如我们可以写一个例子看看:

代码语言:javascript复制
def double(x):
    return 2*x

def square(x):
    return x*x

arr1 = func(double,[1,2,3,4])
arr2 = func(square,[1,2,3,4])

我们总结一下,可接受其他函数作为参数的函数被称为高阶函数。

map函数

map函数是一个内建的高阶函数。

map函数的使用形式是:

代码语言:javascript复制
map(function,sequence)

解释:对sequence中的item依次进行执行function(item),并将结果组成一个List返回,也就是:

代码语言:javascript复制
[function(item1),function(item2),function(item3),function(item4),function(item5)...]

N-COUNT (系列物品或清单中的)一件 An item is one of a collection or list of objects.

我这里对item进行了一些解释,就是一个打包的数据结构里面的元素一个一个的输出出来,就像一个流水线一样,一个接着一个的工件来处理

代码语言:javascript复制
def square(x):
    return x*x

print(map(square,[1,2,3,4]))
map(square,[1,2,3,4])

这个是map的一个例子,注意的是Python3的Map函数返回的是一个迭代器

reduce函数

reduce函数的使用形式是:

代码语言:javascript复制
reduce(function,sequence[,initial])

解释:先将sequence的前两个item传给function,就是这样想,值1,值2给值3,是做的一种迭代的操作,直到sequence没有元素,如果有initial,则作为初始值调用。

代码语言:javascript复制
reduce(f,[x1,x2,x3,x4]) = f(f(f(x1,x2),x3),x4)

filter函数

这个函数我觉得可以,见名知其意了吧,filter函数用于过滤元素,它的使用元素.

代码语言:javascript复制
filiter(function, sequence)

解释:将function依次作用于sequence的每个item,既function(item),将返回的值为TRUE的item组成一个List/String/Tuple(取决于sequence的类型,python3的话,统一返回迭代器)。

0 人点赞