itertools.accumulate()の使い方

itertools.accumulate(p, func)のイタレーターは,シーケンス p の累積です.関数(func)を指定しない場合,文字通り累積 (p0, p0+p1, p0+p1+p2, …) が返されます.

関数を指定すると,関数の累積になります.n番目のイタレーター an=f(an-1, pn)となります.ただし,a0=p0 です.

プログラム例

import itertools
def f(x,y):
    return x+2*y

for x in itertools.accumulate([1,2,3,4,5], func=f):
    print('x: {0:d}'.format(x))

実行結果

x: 1
x: 5
x: 11
x: 19
x: 29