POWER QUERY 与 PYTHON 几个函数的有趣比较

为了更加有可比性和易于理解,我这里将原始官方文档或其他教材中写的参数名改动一下。其实 参数名无论怎么起 对于函数外部的调用方来说是没有影响的。

POWER QUERY:
List.Accumulate(sequence as list, initialas any, accumulator as function) as any
三个参数分别是:
initial:初始值,作为累加器函数的初始值(种子值)。
sequence:列表数据类型的参数,List.Accumulate()函数将要对该列表中的每一个数据项逐个进行处理。
accumulator:累加器函数,这是一个函数类型的参数。用法是 (item1, item2)=>

PYTHON:
reduce(accumulator, sequence[, initial])

解释:先将 sequence 的前两个 item 传给 accumulator ,即 accumulator (item1, item2),函数的返回值和 sequence 的下一个 item 再传给 accumulator ,即 accumulator (accumulator (item1, item2), item3),如此迭代,直到 sequence 最后一项,如果有 initial,则作为初始值调用。

==========
POWER QUERY:
List.Transform(sequence as list, transform as function) as list
通过将转换函数 transform 应用到列表 sequence的每个项来返回新的列表。

PYTHON:
map(function, sequence)

解释:对 sequence 中的 每一项item依次执行 function(item),并将结果组成一个新的 List 返回,也就是:
[function(item1), function(item2), function(item3), ...]

==========
POWER QUERY:
List.Select(sequnce as list, selection as function) as list
selection是个匹配选择条件函数
从列表sequnce选出满足selection为True的项组成新的列表。

PYTHON:
filter(selection , sequnce)

解释:用于过滤元素。将 selection 依次作用于 sequnce 的每个 item,即 selection (item),将返回值为 True 的 item 组成一个新的List返回。