Функции map, filter, reduce и zip — встроенные функции Python, упрощающие работу с итерабельными объектами (списками, кортежами, строками и др.).
Функция Map
Функция map принимает функцию и итерабельную последовательность. Она применяет функцию к каждому элементу последовательности и возвращает итератор с результатами.
Пример: Преобразование строк в целые числа.
Задача: прочитать файл с парами чисел, разделенных пробелами, преобразовать строки в целые числа и посчитать сумму каждой пары.
f = open('27.txt', 'r')
n = int(f.readline())
a, b = zip(*map(lambda x: map(int, x.split()), [f.readline() for _ in range(n)]))
print(sum(a) + sum(b))
Описание:
- Открываем файл и считываем количество пар чисел.
- Генератор списка [f.readline() for _ in range(n)] считывает данные построчно.
- map(lambda x: map(int, x.split()), …) применяет lambda x: map(int, x.split()) к каждой строке. x.split() разделяет строку на числа, а map(int, …) преобразует подстроки в целые числа.
- zip(*…) группирует числа в пары.
- sum(a) + sum(b) вычисляет сумму пар.
map работает как со встроенными функциями (например, int), так и с пользовательскими:
def f(a, b):
return a * b
a = list(map(f, [2, 4, 5], [5, 6, 7])) # Применение к двум спискам
print(a) # Вывод: [10, 24, 35]
Пример с lambda-функцией:
a = list(map(lambda x: x + 15, (2, 4, 5))) # Прибавление 15 к каждому элементу кортежа
print(a) # Вывод: [17, 19, 20]
Функция Filter
Функция filter фильтрует элементы последовательности. Она принимает функцию (возвращающую True или False) и итерабельную последовательность. Возвращает итератор с элементами, для которых функция вернула True.
Пример: Фильтрация четных чисел.
a = list(filter(lambda x: x % 2 == 0, (2, 4, 5))) # Фильтрация четных чисел в кортеже
print(a) # Вывод: [2, 4]
Функция Reduce
Функция reduce (модуль functools) применяет функцию к последовательности, сводя её к одному значению.
from functools import reduce
a = reduce(lambda x, y: x * y, (8, 9, 12, 100)) # Перемножение всех элементов кортежа
print(a) # Вывод: 86400
Функция Zip
Функция zip объединяет итерабельные последовательности, создавая кортежи из соответствующих элементов.
Пример: Объединение списка и строки.
a = [1, 2, 3, 4]
b = "abcd"
result = list(zip(a, b))
print(result) # Вывод: [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
Функции map, filter, reduce и zip — эффективные инструменты Python для обработки данных. Они делают код компактнее и читабельнее.