我最近一直在学习很多Haskell,并想尝试一些Python中的巧妙技巧。根据我的理解,Python的reduce会自动设置迭代变量,并将函数中的累加器传递给reduce中给出的列表的前两个值。在Haskell中,当我使用它的等价物,折叠时,我可以指定我想要的累加器。有没有办法可以用Python的缩减来做到这一点?
答案 0 :(得分:6)
引用reduce docs,界面是:
reduce(function, iterable[, initializer])
如果存在可选的初始化程序,则会将其放在项目之前 在计算中的迭代,并作为默认值 iterable是空的。如果没有给出初始化器并且迭代包含 只有一个项目,第一个项目被退回。
因此,使用初始化程序的(学术)示例可能是:
seq = ['s1', 's22', 's333']
len_sum_count = reduce(lambda accumulator, s: accumulator + len(s), seq, 0)
assert len_sum_count == 9