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