Маппинг списков

borntohack

змееуст
Команда форума
Модератор
Апр 22, 2020
78
62
18
39
Москва, РФ
МАППИНГ СПИСКОВ

Задача маппинга обычно сводится к преобразованию элементов списка согласно какой-либо декларируемой инструкции.
Одна из задач, из темы "Работа со списками" (при приведении списка к строке для любых объектов) требует приведение самих объектов к строке.
Это можно выполнить двумя способами:
1. Применив встроенную функцию map из стандартной библиотеки python:
Python:
stringlist = list(map(str, nonstringlist))
2. С использованием итеративного генератора (вариант, избранный в вышеуказанной теме) или спискового включения (об этом отдельная тема):
Python:
stringlist = (str(i) for i in nonstringlist)

Подробнее про map:
Как можно заметить - первым аргументом map принимает функцию маппинга (callable объект), в качестве аргумента в которую он будет подставлять поочередно элементы списка. В нашем случае - это функция str, которая преобразует объект в строку. Но маппить можно и кастомными функциями и любыми другими встроенными (не забывайте, что не все функции выполняются с любыми аргументами).
Рассмотрим пример:
Дан некий список чисел. Нужно получить список, содержащий квадраты этих чисел. Опишем функцию маппинга:
Python:
def to_square(x):
    return x**2
и затем перемаппим наш список:
Python:
lst = [1,2,3,4,5,6,7,8,9]
newlst = list(map(to_square,lst))
теперь наш newlst выглядит как [1, 4, 9, 16, 25, 36, 49, 64, 81]

Так же можно заметить, что результат маппинга я принудительно привожу к списку конструкцией list. Это делается мной умышленно, чтобы оставаться в координатах списков. Строго говоря, это не обязательная часть, поскольку функция map возвращает итерируемый объект (т.е. объект, по которому можно итерироваться циклами for, например). Его можно привести к любому итерируемому виду, будь то list или tuple
 
  • Мне нравится
Реакции: alex77bel, BPRO и Student

Форум IT Специалистов