functools.reduce
Сворачивает итерируемый объект в одно значение, последовательно применяя функцию двух аргументов к накопленному результату.
Сигнатура
functools.reduce(function, iterable[, initializer])reduce применяет функцию слева направо: сначала к первым двум элементам, затем к результату и следующему элементу и так далее. Необязательный initializer задаёт стартовое значение и страхует от ошибки на пустой последовательности.
from functools import reduce
product = reduce(lambda a, b: a * b, [1, 2, 3, 4])
print(product) # 24
total = reduce(lambda a, b: a + b, [], 0)
print(total) # 0 (благодаря initializer)