Как работает и для чего используется функция map в Python

Ответ

Функция map() применяет указанную функцию к каждому элементу итерируемого объекта (например, списка) и возвращает итератор с результатами.

Ее основное назначение — трансформация элементов коллекции без использования явных циклов.

Синтаксис: map(function, iterable, ...)

Ключевые характеристики:

  • Ленивые вычисления: map() возвращает итератор. Вычисления происходят только в момент запроса очередного элемента (например, при преобразовании в list() или в цикле for). Это экономит память на больших коллекциях.
  • Краткость: Позволяет записать трансформацию в одну строку.
  • Работа с несколькими коллекциями: Может принимать несколько итерируемых объектов, если функция принимает соответствующее количество аргументов.

Пример 1: Один итерируемый объект

numbers = [1, 2, 3, 4]

# Применяем функцию возведения в квадрат к каждому элементу
squared_iterator = map(lambda x: x * x, numbers)

# Чтобы увидеть результат, преобразуем итератор в список
squared_list = list(squared_iterator)
print(squared_list)  # Вывод: [1, 4, 9, 16]

Пример 2: Несколько итерируемых объектов

list_a = [1, 2, 3]
list_b = [10, 20, 30]

# Суммируем элементы из двух списков с одинаковыми индексами
sums_iterator = map(lambda x, y: x + y, list_a, list_b)
print(list(sums_iterator)) # Вывод: [11, 22, 33]

map() vs. Генераторы списков

Для простых трансформаций чаще предпочитают генераторы списков (list comprehensions), так как они считаются более читаемыми и "питоничными".

# Тот же результат, что и в первом примере, но с помощью генератора
squared_list_comp = [x * x for x in numbers]
print(squared_list_comp) # Вывод: [1, 4, 9, 16]