Filter() vs Reduce()#
В чём разница?#
filter() - выбор элементов по условию.
reduce() - свертка списка в одно значение.
Пример использования filter() и reduce() над итерируемым объектом в Python:
from functools import reduce
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Пример использования filter() для отфильтровывания четных чисел
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # выводит [2, 4, 6, 8, 10]
# Пример использования reduce() для нахождения суммы чисел от 1 до 10
sum_of_numbers = reduce(lambda x, y: x + y, numbers)
print(sum_of_numbers) # выводит 55
filter() для отбора только четных чисел в списке numbers, и reduce() для нахождения суммы всех чисел в списке от 1 до 10.
-
filter() принимает два аргумента - функцию-предикат и итерируемый объект. Он возвращает новый итератор, содержащий только те элементы итерируемого объекта, которые удовлетворяют условиям, заданным функцией-предикатом.
-
reduce() также принимает два аргумента - функцию и итерируемый объект. Он выполняет функцию на каждой паре элементов из итерируемого объекта, образуя редуцированное значение, которое в конечном итоге становится результатом функции.
В примере мы использовали reduce() для нахождения суммы всех чисел в итерируемом объекте.