import operator

def accumulate(iterable, func=operator.add):
    it = iter(iterable)
try:
    total = next(it)
except StopIteration:
    return
yield total
for element in it:
    total = func(total, element)
yield total
Как вычислить кумулятивную сумму списка кортежей