Grant Edwards wrote: > On 2017-06-13, Peter Otten <__pete...@web.de> wrote: > >>> def edges(items): # where items is a non-empty iterator >>> first = next(items) >>> last = functools.reduce(sekond, items, first) >>> return [first, last] >>> >>> Of course, right? >> >> Yeah, reduce() is certainly the cherry on the itertools cake ;) > > Is the optional initializer the only difference between > functools.reduce() and the builtin reduce()?
I don't think there's a difference at all -- at least the docstrings are the same: $ python -c 'import functools; print functools.reduce.__doc__ == reduce.__doc__; print reduce.__doc__' True reduce(function, sequence[, initial]) -> value Apply a function of two arguments cumulatively to the items of a sequence, from left to right, so as to reduce the sequence to a single value. For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). If initial is present, it is placed before the items of the sequence in the calculation, and serves as a default when the sequence is empty. $ Note that the builtin was removed in Python 3. -- https://mail.python.org/mailman/listinfo/python-list