【发布时间】:2021-12-08 13:20:47
【问题描述】:
我已经习惯了类似 FP/haskell 的 reduce 概念,已经在 Python 中作为内置库实现:
from functools import reduce
lst = [1,2,3,4,5]
reduce(lambda x, y: x*y, lst)
# result: 120
但这不适用于例如具有三个参数的 lambda:
from functools import reduce
lst = [1,2,3,4,5]
reduce(lambda x, y, z: x*y+z, lst)
# expected result: (1*2+3) * 4 + 5
# actual result:
# TypeError: <lambda>() missing 1 required positional argument: 'z'
基本原理是保持“前一个结果是下一个参数”的规则。
是否有内置的实现,或功能结构的巧妙/简单组合来实现这样的目标?
ps。当心pseudo-duplicates
【问题讨论】:
标签: python python-3.x functional-programming