Функция map
в Python используется для применения указанной функции к каждому элементу одного или нескольких итерируемых объектов (например, списков, кортежей) и возврата итератора с результатами. Это полезный инструмент для функционального программирования, позволяющий сократить код и сделать его более читабельным.
Содержание
Синтаксис
map(function, iterable, ...)
Параметры
function
: Обязательный параметр. Функция, которая будет применена к каждому элементу итерируемого объекта. Функция должна принимать столько аргументов, сколько итерируемых объектов передано.iterable
: Один или несколько итерируемых объектов. Это могут быть списки, кортежи, строки и другие объекты, поддерживающие итерацию.
Возвращаемое значение
Функция возвращает итератор, содержащий результаты применения указанной функции к каждому элементу переданных итерируемых объектов.
Примеры использования
Пример 1: Применение функции к каждому элементу списка
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers)) # Вывод: [1, 4, 9, 16, 25]
Пример 2: Применение функции к каждому элементу нескольких списков
def add(x, y):
return x + y
list1 = [1, 2, 3]
list2 = [4, 5, 6]
summed_list = map(add, list1, list2)
print(list(summed_list)) # Вывод: [5, 7, 9]
Пример 3: Преобразование строки в список символов
string = "hello"
char_list = map(str, string)
print(list(char_list)) # Вывод: ['h', 'e', 'l', 'l', 'o']
Важные замечания
- Возвращаемый итератор: Функция
map
возвращает итератор, а не список. Чтобы получить список, нужно явно преобразовать результат в список с помощью функцииlist()
. - Неизменяемость входных данных: Функция
map
не изменяет исходные итерируемые объекты, а возвращает новый итератор с преобразованными значениями. - Производительность: Так как
map
возвращает итератор, это может быть более эффективно с точки зрения памяти для работы с большими наборами данных по сравнению с генерацией списков напрямую. - lambda-функции: Вместо определения именованных функций можно использовать
lambda
-выражения для краткости.
Пример с использованием lambda
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)
print(list(squared_numbers)) # Вывод: [1, 4, 9, 16, 25]
Подробнее про
lambda
функции читайте в нашей статье — Анонимные функции.