]> granicus.if.org Git - python/commitdiff
Add pure python equivalent code for reduce().
authorRaymond Hettinger <python@rcn.com>
Thu, 2 Feb 2012 08:48:46 +0000 (00:48 -0800)
committerRaymond Hettinger <python@rcn.com>
Thu, 2 Feb 2012 08:48:46 +0000 (00:48 -0800)
Doc/library/functions.rst

index 5be4edd61c19bbda5a39bbbd12d9c3babd7efc12..3845f1960c467582fdd2a888ece06208f922aada 100644 (file)
@@ -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)