reduce什么意思(LAMBDA和它的兄弟们——REDUCE)

时间:2024-10-27 08:47:07

REDUCE:减少,缩小,浓缩

函数REDUCE:通过将 LAMBDA 应用于每个值,并在累加器中返回总值,将数组减小为累积值。

相比起“减小“,将”累加器“作为这个函数的关键词其实更加直观。

=REDUCE([初始值],数组, lambda())

第一参数视为一个累加器,LAMBDA针对第二参数数组元素逐个运算,每一次的运算结果都会被累加到第一参数中,而累加后的第一参数又将再次参与下一次运算,如此往复直到运算结束。最终,累加器的值将被作为REDUCE的结果返回。

REDUCE示意图


1~10的平方和

平方和即将数字平方后求和:

1*1+2*2+3*3+……+10*10=?

=REDUCE(0,A1:A10,LAMBDA(x,y,x+y*y))

REDUCE第一参数设置为0,将被传递给LAMBDA第一参数x.

REDUCE第二参数是一个数组,将被传递给LAMBDA第二参数y.

LAMBDA将针对y里面的数组元素逐个执行运算x+y*y

y中有10个元素,所以进行了10次运算,每次运算的参数变化和结果如下图。

REDUCE运算示意图


文本叠加

上述案例中执行加法运算,每次运算结果返回累加器时也执行加法。

以下案例中用VSTACK执行数组堆叠运算,结果返回累加器时自然也执行数组堆叠。

=REDUCE("单元号",A1:A5,LAMBDA(x,y,VSTACK(x,y&"-"&B1:B3)))

累加器起始值“单元号“,后续每次运算的结果在此基础上叠加。

REDUCE累加

下图中显示出前2次运算的参数变化和结果,后续的以此类推。