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']

Article author: Andrei Olegovich

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

Search this site

Subscribe to Telegram channel @aofeed to follow new articles and updates to old ones

Go to channel

@aofeed

Ask a question in the Telegram group

@aofeedchat

Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su, info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: