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