Commit 2d93e6ee authored by Raymond Hettinger's avatar Raymond Hettinger

Update the itertools.accumulate() docs.

parent 240f1124
...@@ -46,7 +46,7 @@ Iterator Arguments Results ...@@ -46,7 +46,7 @@ Iterator Arguments Results
==================== ============================ ================================================= ============================================================= ==================== ============================ ================================================= =============================================================
Iterator Arguments Results Example Iterator Arguments Results Example
==================== ============================ ================================================= ============================================================= ==================== ============================ ================================================= =============================================================
:func:`accumulate` p[, start=0] p0, p0+p1, p0+p1+p2, ... ``accumulate([1,2,3,4,5]) --> 1 3 6 10 15`` :func:`accumulate` p p0, p0+p1, p0+p1+p2, ... ``accumulate([1,2,3,4,5]) --> 1 3 6 10 15``
:func:`chain` p, q, ... p0, p1, ... plast, q0, q1, ... ``chain('ABC', 'DEF') --> A B C D E F`` :func:`chain` p, q, ... p0, p1, ... plast, q0, q1, ... ``chain('ABC', 'DEF') --> A B C D E F``
:func:`compress` data, selectors (d[0] if s[0]), (d[1] if s[1]), ... ``compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F`` :func:`compress` data, selectors (d[0] if s[0]), (d[1] if s[1]), ... ``compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F``
:func:`dropwhile` pred, seq seq[n], seq[n+1], starting when pred fails ``dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1`` :func:`dropwhile` pred, seq seq[n], seq[n+1], starting when pred fails ``dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1``
...@@ -84,11 +84,10 @@ The following module functions all construct and return iterators. Some provide ...@@ -84,11 +84,10 @@ The following module functions all construct and return iterators. Some provide
streams of infinite length, so they should only be accessed by functions or streams of infinite length, so they should only be accessed by functions or
loops that truncate the stream. loops that truncate the stream.
.. function:: accumulate(iterable, start=0) .. function:: accumulate(iterable)
Make an iterator that returns accumulated sums plus the value of the *start* Make an iterator that returns accumulated sums. Elements may be any addable
parameter (which defaults to :const:`0`). Elements may be any addable type type including :class:`Decimal` or :class:`Fraction`. Equivalent to::
including :class:`Decimal` or :class:`Fraction`. Equivalent to::
def accumulate(iterable): def accumulate(iterable):
'Return running totals' 'Return running totals'
......
...@@ -66,6 +66,7 @@ class TestBasicOps(unittest.TestCase): ...@@ -66,6 +66,7 @@ class TestBasicOps(unittest.TestCase):
self.assertEqual( self.assertEqual(
list(accumulate(map(typ, range(10)))), list(accumulate(map(typ, range(10)))),
list(map(typ, [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]))) list(map(typ, [0, 1, 3, 6, 10, 15, 21, 28, 36, 45])))
self.assertEqual(list(accumulate('abc')), ['a', 'ab', 'abc']) # works with non-numeric
self.assertEqual(list(accumulate([])), []) # empty iterable self.assertEqual(list(accumulate([])), []) # empty iterable
self.assertEqual(list(accumulate([7])), [7]) # iterable of length one self.assertEqual(list(accumulate([7])), [7]) # iterable of length one
self.assertRaises(TypeError, accumulate, range(10), 5) # too many args self.assertRaises(TypeError, accumulate, range(10), 5) # too many args
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment