使用
reduce()功能:
# forward-compatible importfrom functools import reduceresult = reduce(lambda res, f: f(res), funcs, val)
reduce()将第一个参数(可调用)应用于从第二个参数获取的每个元素,加上到目前为止的累计结果(如
(result,element))。第三个参数是一个起始值(
funcs否则将使用的第一个元素)。
在Python
3中,内置函数被移到了
functools.reduce()location;为了向前兼容,Python
2.6及更高版本中提供了相同的参考。
其他语言可能将其称为折叠。
如果每个函数也需要 中间
结果,请使用
itertools.accumulate()(仅从Python
3.3开始,用于带有函数参数的版本):
from itertools import accumulate, chainrunning_results = accumulate(chain(val, funcs), lambda res, f: f(res))



