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».
