在Python 3.3中,
itertools.accumulate()
通常会对提供的可迭代对象重复应用加法运算,现在可以接受一个函数参数作为参数; 这意味着它现在与functools.reduce()
有一些重叠。初步看起来,两者之间的主要区别似乎是:
accumulate()
默认进行求和操作,但不允许您显式地提供额外的初始条件,而reduce()
则不默认使用任何方法,但是会允许您提供一个初始条件,以供1 / 0元素序列使用。accumulate()
首先接受可迭代对象,而reduce()
首先接受函数。
这两个函数之间是否还有其他差异?还是说这只是两个最初具有不同用途的函数的行为开始趋于一致的问题?