From 6d837a376999edaa127bb94df80a363515753f81 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Thu, 2 Feb 2012 00:48:46 -0800 Subject: [PATCH] Add pure python equivalent code for reduce(). --- Doc/library/functions.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 5be4edd61c1..3845f1960c4 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1058,7 +1058,19 @@ available. They are listed here in alphabetical order. it is placed before the items of the iterable in the calculation, and serves as a default when the iterable is empty. If *initializer* is not given and *iterable* contains only one item, the first item is returned. + Roughly equivalent to:: + def reduce(function, iterable, initializer=None): + it = iter(iterable) + if initializer is None: + try: + initializer = next(it) + except StopIteration: + raise TypeError('reduce() of empty sequence with no initial value') + accum_value = initializer + for x in iterable: + accum_value = function(accum_value, x) + return accum_value .. function:: reload(module)