map()

Содержание
Введение
Пример
all() + map() + lambda
Свой вариант map()
Простые примеры
Несколько источников
map() и comprehensions
Похожие статьи

Введение

map — функция высшего порядка , используемая во многих языках программирования, которая применяет какую-либо функцию к каждому элементу списка своих аргументов, выдавая список результатов как возвращаемое значение.

Функция map() возвращает map объект который является итерируемым, после применения заданной функции к каждому объекту в заданном итеруемом объекте ( списке , кортеже и т.д.)

Простыми словами - если есть какой-то список и какая-то функция - map() может применить эту функцию ко всем элементам списка, а то, что будет возвращать функция - записывать в новый список.

Синтаксис

map(function, iterable)

Пример

Простейший пример на применение функции умножения на 2

l1 = [1, 2, 3] def mult2(x): return x*2 m = map(mult2, l1) print(m) print(list(m))

<map object at 0x7f57a016ff40> [2, 4, 6]

Проверка списка

Чтобы проверить все ли числа в списке положительные нужно воспользоваться функцией all() а также, например, map() и lambda

l1 = [1, 2, 3] l2 = [1, -2, "some text"] if all(map(lambda x: x > 0, l2)): print("all positive in l2") else: print("not all positive in l2") if all(map(lambda x: x > 0, l1)): print("all positive in l1") else: print("not all positive in l1")

all positive in l1
not all positive in l2

Свой вариант map()

Возможно, работа функции map() станет понятнее, если попробовать написать свой аналог

def square(x): return x * x def my_map(func, arg_list): result = [] for i in arg_list: result.append(func(i)) return result squares = my_map(square, [1, 2, 3, 4, 5]) print(squares)

python custom_map.py

[1, 4, 9, 16, 25]

Простые примеры

class Trace: def __init__(self): self.enabled = True def __call__(self, f): def wrap(*args, **kwargs): if self.enabled: print('Calling {}'.format(f)) return f(*args, **kwargs) return wrap result = map(Trace()(ord), "site HeiHei.ru") print("s: ", ord("s"), "i: ", ord("i"), "t: ", ord("t")) print(result) print(next(result)) print(next(result)) print(next(result)) print("iterate with list") print(list(map(ord, "ABC"))) print("iterate with for") for s in map(ord, "DEFG"): print(s)

s: 115 i: 105 t: 116 <map object at 0x7fb05aac8250> Calling <built-in function ord> 115 Calling <built-in function ord> 105 Calling <built-in function ord> 116 iterate with list [65, 66, 67] iterate with for 68 69 70 71

Несколько источников

map() может принимать более одного аргумента в дополнение к функции

domain = ["IT", "Travel", "Bicycles"] url = ["eth1.ru", "heihei.ru", "topbicycle.ru"] partner = ["beget.com", "aviasales.ru", "velodrive.ru"] def combine(domain, url, partner): return f"site {url} is from {domain} domain, and has {partner} as a partner" print(list(map(combine, domain, url, partner)))

['site eth1.ru is from IT domain, and has beget.com as a partner', 'site heihei.ru is from Travel domain, and has aviasales.ru as a partner', 'site topbicycle.ru is from Bicycles domain, and has velodrive.ru as a partner']

В добавок к обычным объектам можно передавать в map() и объекты неограниченной длинны. map() перестанет работать когда закончится самый короткий.

Добавим к выводу порядковые номера с помощью itertools.count()

import itertools def combine(num, domain, url, partner): return f"{num}. site {url} is from {domain} domain, and has {partner} as a partner" print(list(map(combine, itertools.count(), domain, url, partner)))

['0. site eth1.ru is from IT domain, and has beget.com as a partner', '1. site heihei.ru is from Travel domain, and has aviasales.ru as a partner', '2. site topbicycle.ru is from Bicycles domain, and has velodrive.ru as a partner']

map() и comprehensions

Во многих ситуациях одного и того же результата можно добиться как с помощью map() так и с помощью генераторов (см. Генераторы списков)

# List comprehension s = [str(i) for i in range(5)] print(s) # map m = list(map(str, range(5))) print(m) # Generator i = (str(i) for i in range(5)) print(list(i)) i = map(str, range(5)) print(list(i))

['0', '1', '2', '3', '4'] ['0', '1', '2', '3', '4'] ['0', '1', '2', '3', '4'] ['0', '1', '2', '3', '4']

Похожие статьи
Функции
Лямбда функции
all()
Списки
List Comprehension
Python

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: