有没有办法在Python中指定reduce()累加器?

时间:2015-12-08 16:39:51

标签: python haskell reduce

我最近一直在学习很多Haskell,并想尝试一些Python中的巧妙技巧。根据我的理解,Python的reduce会自动设置迭代变量,并将函数中的累加器传递给reduce中给出的列表的前两个值。在Haskell中,当我使用它的等价物,折叠时,我可以指定我想要的累加器。有没有办法可以用Python的缩减来做到这一点?

1 个答案:

答案 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