Supplementing the std lib (Was: partial sums problem)
Ian Kelly
ian.g.kelly at gmail.com
Wed Sep 29 22:17:46 EDT 2010
On Wed, Sep 29, 2010 at 7:06 PM, Paul Rubin <no.email at nospam.invalid> wrote:
> As for the stdlib, the natural places for such a function would be
> either itertools or functools, and the function should probably be called
> "scan", inspired by this:
>
> http://en.wikibooks.org/wiki/Haskell/List_processing#Scans
>
> Python's version would be like "scanl" with an optional arg to make it
> like "scanl1".
>
Something like this?
NoInitialValue = object()
def scan(function, iterable, initial=NoInitialValue):
iterator = iter(iterable)
if initial is NoInitialValue:
try:
accumulator = iterator.next()
except StopIteration:
return
else:
accumulator = initial
yield accumulator
for arg in iterator:
accumulator = function(accumulator, arg)
yield accumulator
Cheers,
Ian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100929/dc971f4a/attachment-0001.html>
More information about the Python-list
mailing list