Mapping в Python означает применение операции для каждого элемента итерируемого объекта, например, списка. В русских текстах помимо mapping может встречаться “маппинг”, “сопоставление” и “отображение”.
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
Mapping в Python
Mapping означает преобразование группы значений в другую группу значений.
В Python для отображения можно использовать встроенную функцию map()
, которая возвращает объект map
. Этот объект является результатом применения какой-либо операции к элементам итерируемого объекта.
Объект map можно легко преобразовать обратно в список, например, вызвав для него функцию list()
.
Синтаксис использования функции map()
:
map (operation, iterable)
Здесь operation
– это функция или лямбда-функция (в зависимости от того, что вам больше нравится). iterable
– это итерируемый объект, к элементам которого применяется operation
.
Mapping списков
В Python отобразить можно любой итерируемый объект, а значит, и список тоже.
Например, давайте возведем в квадрат список чисел. Этот подход в качестве функции отображения использует лямбда-функцию. Если вы не знакомы с лямбдами, рекомендуем статью “Лямбда-функции в Python – объяснение с примерами”.
numbers = [1, 2, 3, 4, 5] squared_nums = map(lambda x: x ** 2, numbers) print(list(squared_nums)) # Вывод: # [1, 4, 9, 16, 25]
Вот тот же пример с обычной функцией:
numbers = [1, 2, 3, 4, 5] def square(number): return number ** 2 squared_nums = map(square, numbers) print(list(squared_nums)) # Вывод: # [1, 4, 9, 16, 25]
Здесь функция square()
применяется для каждого элемента списка чисел. Обратите внимание, что в функция map()
автоматически передает в функцию square
все элементы списка по очереди.
Mapping словарей
При помощи функции map()
можно отображать и словари.
Например, давайте отобразим data
так, чтобы первые буквы строковых значений в парах ключ-значение стали заглавными:
data = { "name": "jack", "address": "imaginary street", "education": "mathematican" } def capitalize(word): return word.capitalize() data_map = map(lambda pair: (pair[0], capitalize(pair[1])), data.iteritems()) data = dict(data_map) print(dict(data)) # Вывод: # {'name': 'Jack', 'address': 'Imaginary street', 'education': 'Mathematican'}
Здесь довольно много строк кода, поэтому давайте разберем подробнее:
- У нас есть
data
– словарь, содержащий пары ключ-значение. Значения сохранены в нижнем регистре, а мы хотим сделать первые буквы заглавными. - Функция
capitalize()
принимает строку и возвращает ее копию, в которой первый символ переведен в верхний регистр. data_map
– это объект map. Он создается путем применения функцииcapitalize()
для каждого значения каждой пары ключ-значение в data.- Чтобы преобразовать
data_map
обратно в словарь, мы используем встроенную функциюdict()
.
Mapping кортежей
В Python можно также отображать кортежи. Тут все аналогично отображению списка.
Например, давайте создадим кортеж, содержащий имена из другого кортежа, с переводом первых букв имен в верхний регистр:
names = ("jamie", "jane", "jack") def capitalize(word): return word.capitalize() capitalized_names = map(capitalize, names) print(tuple(capitalized_names)) # Вывод: # ('Jamie', 'Jane', 'Jack')
Заключение
В Python для преобразования одной группы значений в другую можно использовать mapping (отображение). Для этого применяется встроенная функция map()
. Эта функция применяет переданную ей в качестве аргумента функцию к каждому элементу группы значений.
Спасибо за внимание и успешного кодинга!
Перевод статьи Artturi Jalli “Mapping Python Lists, Dicts, and Tuples”.