David Isaac wrote: > What's the good way to produce a cumulative sum? > E.g., given the list x, > cumx = x[:] > for i in range(1,len(x)): > cumx[i] = cumx[i]+cumx[i-1] > > What's the better way? > > Thanks, > Alan Isaac
Don't know about better, but this is what I came up with: class PartialSum(object): def __init__(self, alist): self.sequence = alist[:] self.N = len(alist) self.reset() def reset(self): self._i = 0 self._sumi = 0 def __iter__(self): return self def next(self): if self._i == self.N: self.reset() raise StopIteration self._sumi += self.sequence[self._i] self._i += 1 return self._sumi for sum in PartialSum( [1,1,1,1,1] ): print sum **2 1 4 9 16 25 Gerard -- http://mail.python.org/mailman/listinfo/python-list