[Python-ideas] Start argument for itertools.accumulate() [Was: Proposal: A Reduce-Map Comprehension and a "last" builtin]
Tim Peters
tim.peters at gmail.com
Sun Apr 15 12:15:18 EDT 2018
[Raymond Hettinger <raymond.hettinger at gmail.com>]
> Q. Do other languages do it?
> A. Numpy, no. R, no. APL, no. Mathematica, no. Haskell, yes.
>
> * http://docs.scipy.org/doc/numpy/reference/generated/numpy.ufunc.accumulate.html
> * https://stat.ethz.ch/R-manual/R-devel/library/base/html/cumsum.html
> * http://microapl.com/apl/apl_concepts_chapter5.html
> \+ 1 2 3 4 5
> 1 3 6 10 15
> * https://reference.wolfram.com/language/ref/Accumulate.html
> * https://www.haskell.org/hoogle/?hoogle=mapAccumL
There's also C++, which is pretty much "yes" to every variation
discussed so far:
* partial_sum() is like Python's current accumulate(), including
defaulting to doing addition.
http://en.cppreference.com/w/cpp/algorithm/partial_sum
* inclusive_scan() is also like accumulate(), but allows an optional
"init" argument (which is returned if specified), and there's no
guarantee of "left-to-right" evaluation (it's intended for associative
binary functions, and wants to allow parallelism in the
implementation).
http://en.cppreference.com/w/cpp/algorithm/inclusive_scan
* exclusive_scan() is like inclusive_scan(), but _requires_ an "init"
argument (which is not returned).
http://en.cppreference.com/w/cpp/algorithm/exclusive_scan
* accumulate() is like Python's functools.reduce(), but the operation
is optional and defaults to addition, and an "init" argument is
required.
http://en.cppreference.com/w/cpp/algorithm/accumulate
More information about the Python-ideas
mailing list