高阶归约是指将一个归约函数作为参数传入到另一个高阶函数中,从而实现一系列数据的归约操作。在 Python 中,高阶归约可以使用内置函数 reduce() 实现。reduce() 函数可以对序列中的元素进行归约操作,其语法格式如下:
reduce(function, sequence[, initial])
其中,function 表示归约操作的函数,sequence 表示需要归约的序列,initial 是可选的初始值。在使用 reduce() 函数时,需要先从 functools 模块中导入它。
以下是一个例子,用 reduce() 函数求一个序列中的所有元素之和:
import functools
seq = [1, 2, 3, 4, 5]
sum = functools.reduce(lambda x, y: x + y, seq)
print(sum) #输出结果为15
以上代码中,reduce() 函数接收 seq 序列作为参数,使用 lambda 函数实现了相邻元素相加的操作。
下面再来一个例子,计算一个列表中所有元素的乘积:
import functools
lst = [1, 2, 3, 4, 5]
product = functools.reduce(lambda x, y: x * y, lst)
print(product) #输出结果为120
以上代码中,reduce() 函数接收 lst 列表作为参数,使用了 lambda 函数实现了相邻元素相乘的操作。
需要注意的是,第三个可选参数 initial 表示归约操作的初始值,如果没有指定,则默认使用序列中的第一个元素作为初始值。另外,在 Python 3 中,reduce() 函数被移动到了 functools 模块中,需要通过导入 functools 模块来使用它。
需要提醒的是,使用 reduce() 函数时需要注意函数的可缩减性,即归约函数应该能够接受两个参数并返回一个结果。如果归约函数不能处理某些输入,那么 reduce() 函数就会抛出 TypeError 异常。