Освоение функции map() в Python: синтаксис, примеры и лучшие практики
Освоение функции map() в Python: синтаксис, примеры и лучшие практики
Встроенная функция map() в Python применяет функцию к каждому элементу итерируемого объекта (списка, кортежа, множества, строки, словаря и т.д.) и возвращает новый итерируемый объект. Она является краеугольным камнем функционального стиля программирования в Python.
Что вы узнаете
- Синтаксис и основные параметры
- Как
map()работает под капотом - Использование
map()с встроенными функциями - Применение
map()к строкам, спискам, кортежам, словарям и множествам - Использование лямбда-выражений с
map() - Комбинирование нескольких итераторов в одном вызове
Синтаксис
map(function, iterable1, iterable2, ... iterableN)
Параметры
- function: обязательный вызываемый объект, который будет применён к каждому элементу.
- iterable(s): один или несколько итерируемых объектов. Функция получает по одному элементу от каждого итерируемого объекта за вызов.
Возвращаемое значение
Результат — объект map — ленивый итератор, выдающий преобразованные элементы. Преобразуйте его в список, кортеж или множество для материализации значений.
Как работает map()
Простой пример, возводящий в квадрат каждое число в списке:
def square(n):
return n * n
my_list = [2, 3, 4, 5, 6, 7, 8, 9]
updated = map(square, my_list)
print(list(updated)) # [4, 9, 16, 25, 36, 49, 64, 81]
Объект map ленив; преобразование в список принудительно вычисляет значения.
Использование map() с встроенными функциями
Комбинируйте map() с любым встроенным, принимающим один аргумент. Например, округление чисел с плавающей точкой:
values = [2.6743, 3.63526, 4.2325, 5.9687967, 6.3265, 7.6988, 8.232, 9.6907] rounded_vals = map(round, values) print(list(rounded_vals)) # [3, 4, 4, 6, 6, 8, 8, 10]
Map над строками
Строки итерируемы, поэтому map() может преобразовывать каждый символ или слово.
def to_upper(s):
return s.upper()
text = "welcome to guru99 tutorials!"
print("".join(map(to_upper, text))) # WELCOME TO GURU99 TUTORIALS!
Map над списками чисел
def times_ten(n):
return n * 10
nums = [2, 3, 4, 5, 6, 7, 8, 9]
print(list(map(times_ten, nums))) # [20, 30, 40, 50, 60, 70, 80, 90]
Map над кортежами
def to_upper_str(s):
return s.upper()
languages = ("php", "java", "python", "c++", "c")
print(list(map(to_upper_str, languages))) # ['PHP', 'JAVA', 'PYTHON', 'C++', 'C']
Map над словарями и множествами
При итерации по словарю map() получает его ключи. Для множества порядок произволен.
def times_ten(n):
return n * 10
sample_set = {2, 3, 4, 5, 6, 7, 8, 9}
print(sorted(map(times_ten, sample_set))) # [20, 30, 40, 50, 60, 70, 80, 90]
Использование лямбда-функций
Анонимные функции делают код лаконичным:
nums = [2, 3, 4, 5, 6, 7, 8, 9] print(list(map(lambda x: x * 10, nums))) # [20, 30, 40, 50, 60, 70, 80, 90]
Множественные итераторы
Пример 1: Сложение двух списков
def add(a, b):
return a + b
list1 = [2, 3, 4, 5, 6, 7, 8, 9]
list2 = [4, 8, 12, 16, 20, 24, 28]
print(list(map(add, list1, list2))) # [6, 11, 16, 21, 26, 31, 36]
Пример 2: Конкатенация элементов списка и кортежа
def concat(a, b):
return f"{a}_{b}"
letters = ['a', 'b', 'b', 'd', 'e']
brands = ('PHP', 'Java', 'Python', 'C++', 'C')
print(list(map(concat, letters, brands))) # ['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']
Ключевые выводы
map()преобразует каждый элемент итерируемого объекта заданной функцией.- Возвращает ленивый итератор; преобразуйте в
list,tupleилиsetдля материализации результатов. - Совместим с любым вызываемым — встроенными, пользовательскими функциями и лямбдами.
- Поддерживает множественные итерируемые объекты; функция должна принимать соответствующее число аргументов.
- Отлично подходит для чистого, функционального кода и эффективной обработки больших наборов данных.
Python
- Lambda-функции в Python: практическое руководство по анонимным функциям
- Генераторы в Python: эффективная итерация и продвинутые сценарии
- Замыкания в Python: как вложенные функции захватывают переменные
- Декораторы в Python: улучшайте функции экспертными техниками
- Перегрузка операторов в C++: практическое руководство с примерами кода
- Функции в C++: подробное объяснение с практическими примерами кода
- Функция print() в Python: практическое руководство с примерами
- Мастерство метода strip() в Python: подробное руководство и практические примеры
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Мастерство строк форматирования format() в Python: понятные примеры