itertools.accumulate()
Возвращает накопленные суммы или результаты применения функции func.
Сигнатура
itertools.accumulate(iterable, func=operator.add, *, initial=None)Выдаёт промежуточные результаты: первый элемент, затем результат применения func к накопленному значению и следующему элементу. По умолчанию используется сложение, что даёт нарастающую сумму. Можно передать max, min или любую бинарную функцию.
import itertools
import operator
print(list(itertools.accumulate([1, 2, 3, 4]))) # [1, 3, 6, 10]
print(list(itertools.accumulate([1, 2, 3, 4], operator.mul))) # [1, 2, 6, 24]
print(list(itertools.accumulate([3, 1, 4, 1, 5], max))) # [3, 3, 4, 4, 5]