Ответ
Функция 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]