In Python 3.3, itertools.accumulate()
, which normally repeatedly applies an addition operation to the supplied iterable, can now take a function argument as a parameter; this means it now overlaps with functools.reduce()
. With a cursory look, the main differences between the two now would seem to be:
accumulate()
defaults to summing but doesn't let you supply an extra initial condition explicitly whilereduce()
doesn't default to any method but does let you supply an initial condition for use with 1/0-element sequences, andaccumulate()
takes the iterable first whilereduce()
takes the function first.
Are there any other differences between the two? Or is this just a matter of behavior of two functions with initially distinct uses beginning to converge over time?