Олег Марков
Что делает функция reduce в Python
Введение
Функция reduce из модуля functools позволяет свести коллекцию элементов к единственному значению с помощью функции, которая применяется последовательно к элементам. Это удобно для вычислений вроде суммы, произведения, конкатенации и других операций.
В этой статье мы подробно разберём синтаксис reduce, примеры работы с lambda и обычными функциями, а также покажем типичные сценарии использования в обработке данных.
Если вы хотите детальнее изучить функциональные возможности Python, включая map, filter и reduce — приходите на наш курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажеры для практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Подключение reduce
reduce находится в модуле functools, поэтому перед использованием нужно импортировать:
from functools import reduceСинтаксис функции reduce
reduce(function, iterable[, initializer])function— функция, принимающая два аргумента и возвращающая результат.iterable— итерируемый объект.initializer— необязательное начальное значение для аккумулятора.
Пример с суммой элементов
from functools import reduce
numbers = [1, 2, 3, 4, 5]
total = reduce(lambda x, y: x + y, numbers)
print(total) # 15Процесс: 1 + 2 → 3 3 + 3 → 6 6 + 4 → 10 10 + 5 → 15
Пример с произведением элементов
from functools import reduce
numbers = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, numbers)
print(product) # 24Использование начального значения
numbers = [1, 2, 3]
total = reduce(lambda x, y: x + y, numbers, 10)
print(total) # 16 (10 + 1 + 2 + 3)Частые ошибки
- Забыт импорт
functools.reduce. - Функция должна принимать ровно два аргумента.
- Неправильное использование начального значения может дать неожиданный результат.
Часто задаваемые вопросы
Можно ли использовать reduce с пустым списком? Да, если указан
initializer. Без него будет ошибка.Можно ли использовать обычную функцию вместо lambda? Да, например:
def multiply(x, y):
return x * y
result = reduce(multiply, [2, 3, 4])- Чем reduce отличается от цикла for? Reduce компактнее и функционально, хорошо сочетается с lambda и map/filter для чистого функционального кода.
Заключение
Функция reduce позволяет аккумулировать элементы коллекции в одно значение, облегчая вычисления и сокращая код. Она полезна для суммирования, произведения, объединения строк и других операций, особенно в сочетании с map и filter.
Для системного изучения reduce, map и filter рекомендую пройти курс Основы Python. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Python прямо сегодня.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

Основы Python
Антон Ларичев
Nest.js с нуля
Антон Ларичев