Функция reduce() в Python — сокращение списка на примерах
В этом уроке вы узнаете, как использовать функцию reduce() Python для сведения списка к одному значению.
Сокращение списка
Иногда вам нужно свести список к одному значению. Предположим, что у вас есть список чисел:
scores = [75, 65, 80, 95, 50]
А чтобы вычислить сумму всех элементов в списке оценок, вы можете использовать такой цикл for:
scores = [75, 65, 80, 95, 50] total = 0 for score in scores: total += score print(total)
Выход:
365
В этом примере мы свели весь список к одному значению, которое представляет собой сумму всех элементов списка.
Знакомство с функцией reduce() в Python
Python предлагает функцию reduce(), которая позволяет сократить список более лаконично.
Вот синтаксис функции reduce():
reduce(fn,list)
Функция reduce() применяет функцию fn с двумя аргументами кумулятивно к элементам списка слева направо, чтобы свести список к одному значению.
В отличие от функций map() и filter(), функция reduce() не является встроенной функцией в Python. Фактически, она принадлежит модулю functools.
Чтобы использовать функцию reduce(), вам необходимо импортировать ее из модуля functools, используя следующий оператор в верхней части файла:
from functools import reduce
Ниже показано, как использовать функцию reduce() для вычисления суммы элементов списка оценок:
from functools import reduce def sum(a, b): print(f"a={a}, b={b}, {a} + {b} ={a+b}") return a + b scores = [75, 65, 80, 95, 50] total = reduce(sum, scores) print(total)
Выход:
a=75, b=65, 75 + 65 = 140 a=140, b=80, 140 + 80 = 220 a=220, b=95, 220 + 95 = 315 a=315, b=50, 315 + 50 = 365 365
Как вы можете ясно видеть из вывода, функция reduce() кумулятивно добавляет два элемента списка слева направо и сводит весь список к одному значению.
Чтобы сделать код более кратким, вы можете использовать лямбда-выражение вместо определения функции sum():
from functools import reduce scores = [75, 65, 80, 95, 50] total = reduce(lambda a, b: a + b, scores) print(total)