functools.reduce() применяет функцию кумулятивно к элементам итерируемого объекта, свёртывая его в одно значение.
Она принимает два основных аргумента:
Функция применяется многократно — сначала к первым двум элементам, затем к каждому результату и следующему элементу, пока итерируемый объект не будет исчерпан.
from functools import reduce
result = reduce(lambda a, b: a + b, [1, 2, 3, 4])
print(result) # 10
Вычисление проходит следующим образом:
1 + 2 → 33 + 3 → 66 + 4 → 10Ты можешь передать необязательный третий аргумент как начальное значение:
reduce(lambda a, b: a + b, [1, 2, 3], 10) # 16
Это полезно как значение по умолчанию, когда итерируемый объект может быть пустым.
reduce() лучше всего подходит для операций вроде:
Для простых случаев вроде суммирования предпочитай встроенные функции типа sum() ради читаемости. Оставляй reduce() для сценариев, где ни одна встроенная функция не покрывает нужную логику.
functools.reduce() требует функцию, которая принимает ровно два параметра, чтобы обрабатывать итерируемый объект кумулятивно.
Новый — ещё не проверен сообществом
Вы