Как использовать функцию map() в Python
Узнайте, как использовать функцию Python Map(). Научитесь применять функции к итерациям без написания циклов и сравнивать карту с пониманием списков.
Обзор
При обработке коллекций данных вам часто потребуется применить определенное преобразование к каждому элементу в итерации. Например, преобразование списка строковых чисел в целые числа или нормализация массива строк базы данных путем преобразования их в нижний регистр. Вместо написания многословных циклов for Python предоставляет встроенный инструмент под названием Map().
Функция `map(function, iterable)` принимает функцию преобразования и итерируемый объект в качестве аргументов. Он применяет функцию к каждому элементу итерируемого объекта и возвращает объект итератора (объект карты). Поскольку он возвращается как итератор, вычисления выполняются лениво: элементы обрабатываются только по мере их итерации, что экономит память для больших наборов данных.
Чтобы немедленно получить представление объекта карты в виде списка, вы должны привести результат с помощью конструктора `list()`: `list(map(func, data))`. Вы можете передать любую стандартную функцию, стандартную библиотечную функцию (например, `str` или `len`) или пользовательские анонимные функции, объявленные с ключевым словом `lambda`, непосредственно в `map()` для встроенного выполнения.
Код и вывод выполнения
Этот скрипт демонстрирует изменение коллекций с помощью функции map() с преобразованиями строк, сопоставлением элементов списка с числами и использованием обратных вызовов лямбда.
# 1. Map string conversion over a list of numbers
numbers = [1, 2, 3, 4]
string_numbers = list(map(str, numbers))
print("Mapped to strings:", string_numbers)
# 2. Square numbers using a lambda function inside map()
squared = list(map(lambda x: x**2, numbers))
print("Squared numbers:", squared)
# 3. Apply custom logic function to items
def normalize_name(name):
return name.strip().capitalize()
names = [" alice", "BOB ", " charlie "]
clean_names = list(map(normalize_name, names))
print("Clean names list:", clean_names)Mapped to strings: ['1', '2', '3', '4']
Squared numbers: [1, 4, 9, 16]
Clean names list: ['Alice', 'Bob', 'Charlie']Пошаговая реализация
- Определите функцию преобразования, которую вы хотите применить к каждому элементу коллекции.
- Вызовите map(function_name, iterable), чтобы создать ленивый итератор преобразованных элементов.
- Оберните вызов map() внутри list(), если вам нужно немедленно получить доступ ко всем элементам стандартного списка.
- Объедините map() с лямбда-функциями для быстрых одноразовых встроенных преобразований.
Часто задаваемые вопросы
Является ли map() лучше, чем понимание списков?
Понимание списков обычно считается сообществом более читабельным и питоническим. Однако функция map() может работать быстрее при применении существующей встроенной функции (например, map(str, list)), поскольку она запускает оптимизированные циклы кода C.
Может ли функция map() принимать несколько итераций?
Да! Если функция преобразования принимает несколько аргументов, вы можете передать в функцию map() несколько итераций. Например, map(lambda x, y: x + y, list1, list2) добавит элементы попарно.
Связанные темы
Узнайте, как использовать лямбда-функции в Python. Освойте анонимные функции, встроенные обратные вызовы и сортировку данных списка с помощью лямбда-ключей.
Как использовать понимание списков в PythonУзнайте, как использовать генераторы списков в Python. Создавайте краткие циклы, применяйте условные фильтры и создавайте матрицы с понятным визуальным синтаксисом.
Как использовать функцию filter() в PythonУзнайте, как использовать функцию Python filter() для извлечения элементов из коллекций. Сравните фильтр со списками и лямбда-обратными вызовами.
Рекомендуемые ресурсы Python
Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.
Функции Python
Мастер-функции Python. Узнайте, как писать код многократного использования с использованием def, определять аргументы, возвращаемые значения и понимать область действия локально и глобально.
Шпаргалка по функциям математического модуля Python
Краткое справочное руководство по стандартной математической библиотеке Python. Узнайте, как использовать тригонометрические, логарифмические, округляющие и арифметические функции.
Python против JavaScript: какой язык программирования лучше?
Всестороннее сравнение Python и JavaScript. Изучите синтаксические различия, производительность, варианты использования (серверная и клиентская части) и примеры кодирования.