functools.reduce

Функция functools.reduce используется для последовательного применения функции к элементам итерируемого объекта, сводя его к единственному значению. Она полезна для операций, требующих агрегации данных.

Синтаксис

functools.reduce(function, iterable[, initializer])
  • function: функция, принимающая два аргумента, которую следует применить к элементам итерируемого объекта
  • iterable: итерируемый объект, к элементам которого будет применяться функция
  • initializer (необязательный): начальное значение, которое используется в качестве первого аргумента при первом вызове функции

Рассмотрим простую функцию, суммирующую два числа:

def add(x, y):
    return x + y

Используем reduce для суммирования всех элементов списка:

from functools import reduce

numbers = [1, 2, 3, 4, 5]
result = reduce(add, numbers)
print(result)  # Вывод: 15

reduce последовательно применяет функцию add к элементам списка: ((((1 + 2) + 3) + 4) + 5).

Если указать initializer, он будет использоваться как начальное значение:

result = reduce(add, numbers, 10)
print(result)  # Вывод: 25

В этом случае вычисление будет выглядеть как (((((10 + 1) + 2) + 3) + 4) + 5).