В этом уроке по основам Python, мы рассмотрим функцию reduce()
из модуля functools. Функция предназначена для итерируемой последовательности, чтобы свести ее к единственному значению.
Синтаксис:
from functools import reduce
reduce(function, iterable[, initializer])
Аргументы:
function
- пользовательская функция, принимающая 2 аргумента,iterable
- итерируемая последовательность,initializer
- начальное значение.
Пояснения:
function
— это функция, которая применяется к элементам последовательности. Должен принимать два аргумента, где первый аргумент — это ранее накопленное значение, а второй аргумент — следующий элемент последовательности.
iterable
— это последовательность, элементы которой должны быть сведены к одному значению. Если последовательность пуста и аргумент инициализации не указан, генерируется исключение TypeError
.
Если необязательный initializer
существует, он помещается перед итерируемыми элементами в вычислении. Другими словами, это базовая линия, от которой вы хотите начать отсчет. Аргумент initializer
также используется по умолчанию, когда iterable
пуста.
Рассмотрим примеры:
import functools
my_list = [100, 5, 5, 4, 1]
print('Сумма элементов списка:', functools.reduce(lambda a, b: a + b, my_list))
print('Максимальный элемент списка: ', functools.reduce(lambda a, b: a if a > b else b, my_list))
Результат:
>>> Сумма элементов списка: 115
>>> Максимальный элемент списка: 100
Функция reduce()
также может быть объединена с операторными функциями для достижения функциональности, аналогичной функциональности с лямбда-функциями, что делает код более читабельным.
import functools
import operator
my_list = [100, 5, 5, 4, 1]
print('Сумма элементов списка:', functools.reduce(operator.add, my_list))
print('Произведение элементов списка: ', functools.reduce(operator.mul, my_list))
Результат:
>>> Сумма элементов списка: 115
>>> Произведение элементов списка: 10000