Python Funkce map() s PŘÍKLADY

⚡ Chytré shrnutí

Python Funkce map() aplikuje danou funkci na každou položku iterovatelného objektu, jako je seznam, n-tice, sada, slovník nebo řetězec. Vrací objekt typu „lazy map“, který lze převést pomocí funkce list() nebo iterovat pomocí smyčky.

  • 🔢 Syntaxe: Funkce map() bere funkci plus jeden nebo více iterovatelných prvků a aplikuje tuto funkci na každý prvek.
  • 🔁 Návratová hodnota: Funkce map() vrací objekt typu „lazy map“, takže pro zobrazení výsledků jej zabalte do metod list(), tuple() nebo set().
  • 🧩 Iterovatelné objekty: Seznamy, n-tice, množiny, slovníky a řetězce fungují jako vstupy pro map().
  • Lambda: Párování map() s lambdou zabraňuje definování samostatné pojmenované funkce pro jednoduché transformace.
  • Více iterovatelných objektů: Předávání několika iterovatelných objektů aplikuje funkci na všechny ně paralelně, stopping v nejkratším možném čase.
  • 🤖 Asistence AI: Asistenti umělé inteligence, jako je GitHub Copilot, generují volání map() a transformace ve stylu mapy dodávají datové kanály ve strojovém učení.

Python Funkce map().

Syntax

map(function, iterator1,iterator2 ...iteratorN)

parametry

Zde jsou dva důležité parametry:

  • funkce: Povinná funkce, která má být přiřazena metodě map(), a která bude aplikována na všechny položky dostupné v iterátoru.
  • iterátor: Povinný iterovatelný objekt. Může to být seznam, n-tice atd. Funkci map() můžete předat více objektů iterátoru.

Návratová hodnota

Funkce map() aplikuje danou funkci na všechny položky uvnitř iterátoru a vrací iterovatelný objekt mapy, tj. n-tici, seznam atd.

Jak funguje funkce map()?

Funkce map() přijímá dva vstupy: funkci a iterovatelný objekt. Funkce přiřazená map() je normální funkce a iteruje přes všechny hodnoty přítomné v iterovatelném objektu.

Představte si například, že máte seznam čísel a chcete najít druhou mocninu každého z čísel.

Pro získání výstupu potřebujeme funkci, která vrátí druhou mocninu zadaného čísla. Funkce vypadá takto:

def square(n):
	return n*n

Seznam položek, pro které chceme najít druhou mocninu, je následující:

my_list = [2,3,4,5,6,7,8,9]

Nyní použijeme vestavěnou funkci map() k získání druhé mocniny každé z položek v seznamu my_list.

Konečný kód je následující:

def square(n):
    return n*n
my_list = [2,3,4,5,6,7,8,9]
updated_list = map(square, my_list)
print(updated_list)
print(list(updated_list))

Výstup:

<map object at 0x0000002C59601748>
[4, 9, 16, 25, 36, 49, 64, 81]

Výstupem funkce map(), jak je vidět výše, je objekt mapy zobrazený na obrazovce jako .

Pro získání konečného výstupu budete muset iterovat výstup z map() pomocí smyčky for nebo metody list(). V kódu jsem použil list() k zobrazení hodnot uvnitř daného seznamu.

Takže pomocí funkce map() můžeme získat druhou mocninu každého čísla. Seznam zadaný funkci map() byl [2,3,4,5,6,7,8,9] a pomocí funkce square() jsme dostali výstup [4, 9, 16, 25, 36, 49, 64, 81].

Funkce map() aplikuje funkci square() na všechny položky v seznamu. Například vezme proměnnou my_list a aktualizuje seznam o druhou mocninu každého čísla. Výstup je uložen v proměnné updated_list.

Použití map() s Python vestavěné funkce

Jedno Python Funkce map() je vestavěná funkce a lze ji také použít s jinými vestavěnými funkcemi dostupnými v PythonV tomto příkladu využijeme Python Vestavěná funkce round(), která zaokrouhluje zadané hodnoty.

Příklad:

Seznam, který mám, je my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Potřebuji zaokrouhlené hodnoty pro každou položku v seznamu, takže jako funkci map() použijeme funkci round().

my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]
updated_list = map(round, my_list)
print(updated_list)
print(list(updated_list))

Výstup:

<map object at 0x000000E65F901748>
[3, 4, 4, 6, 6, 8, 8, 10]

Funkce round() se aplikuje na všechny položky v seznamu a vrací seznam se všemi hodnotami zaokrouhlenými, jak je znázorněno ve výstupu.

Použití map() s řetězcem jako iterátor

Můžeme také použít map() na řetězec. V PythonŘetězec se chová jako pole, takže ho můžeme snadno použít uvnitř map().

V tomto příkladu máme funkci myMapFunc(), která se postará o převod zadaného řetězce na velká písmena. Funkce myMapFunc() je předána funkci map(). Funkce map() se postará o převod zadaného řetězce na velká písmena jeho předáním funkci myMapFunc().

def myMapFunc(s):
    return s.upper()
my_str = "welcome to guru99 tutorials!"
updated_list = map(myMapFunc, my_str)
print(updated_list)
for i in updated_list:
    print(i, end="")

Výstup:

<map object at 0x000000DF2E711748>
WELCOME TO GURU99 TUTORIALS!

Použití map() se seznamem Numbers

Pro práci se seznamem v map() vezmeme seznam čísel a každé číslo v seznamu vynásobíme číslem 10.

Seznam, který budeme používat, je [2,3,4,5,6,7,8,9]. Funkce myMapFunc() se postará o vynásobení daného čísla číslem 10. Funkce je předána funkci map() spolu se seznamem.

Příklad:

def myMapFunc(n):
    return n*10

my_list = [2,3,4,5,6,7,8,9]

updated_list = map(myMapFunc, my_list)
print(updated_list)
print(list(updated_list))

Výstup:

<map object at 0x000000EE2C061898>
[20, 30, 40, 50, 60, 70, 80, 90]

Výstup, který vidíme, je, že každé číslo v seznamu je vynásobeno 10.

Použití map() s Tuple

N-tice je objekt v Python který má položky oddělené čárkami a uzavřené v kulatých závorkách. V tomto příkladu vezmeme n-tici s řetězcovými hodnotami. Funkce, kterou použijeme, převede zadané hodnoty na velká písmena.

Příklad:

def myMapFunc(n):
    return n.upper()

my_tuple = ('php','java','python','c++','c')

updated_list = map(myMapFunc, my_tuple)
print(updated_list)
print(list(updated_list))

Výstup:

<map object at 0x0000009C3C3A16A0>
['PHP', 'JAVA', 'PYTHON', 'C++', 'C']

Výstupem, který dostaneme, je n-tice zpět, kde jsou všechny hodnoty v ní převedeny na velká písmena.

Použití map() se slovníkem

A slovník v Python se vytváří pomocí složených závorek ({}). Protože slovník je iterátor, můžete jej použít uvnitř funkce map(). Použijme nyní slovník jako iterátor uvnitř map().

Následující příklad ukazuje fungování iterátoru slovníku uvnitř map():

def myMapFunc(n):
    return n*10
my_dict = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_dict)
print(finalitems)
print(list(finalitems))

Výstup:

<map object at 0x0000007EB451DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Použití map() s Set

Set v Python je neuspořádaná kolekce položek ve složených závorkách ({}). Protože set() je také iterátor, můžete ho použít uvnitř funkce map().

Zde je funkční příklad použití množiny jako iterátoru uvnitř map():

def myMapFunc(n):
    return n*10
my_set = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_set)
print(finalitems)
print(list(finalitems))

Výstup:

<map object at 0x000000AC8F05DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Použití map() s funkcí Lambda

In Pythonlambda výrazy se používají ke konstrukci anonymních funkcí. Budete muset použít klíčové slovo lambda, stejně jako používáte def k definování normálních funkcí.

V tomto příkladu tedy použijeme funkci lambda uvnitř map(). Funkce lambda vynásobí každou hodnotu v seznamu číslem 10.

Příklad:

my_list = [2,3,4,5,6,7,8,9]
updated_list = map(lambda x: x * 10, my_list)
print(updated_list)
print(list(updated_list))

Výstup:

<map object at 0x000000BD18B11898>
[20, 30, 40, 50, 60, 70, 80, 90]

Použití více iterátorů uvnitř funkce map()

Příklad 1: Předání dvou iterátorů seznamu funkci map()

Do funkce map() můžete současně odeslat více než jeden iterátor, tj. seznam, n-tici atd.

Například pokud chcete přidat dva seznamy, totéž lze provést pomocí funkce map(). Použijeme dva seznamy, můj_seznam1 a můj_seznam2.

V níže uvedeném příkladu je první položka v seznamu my_list1 přidána k první položce seznamu my_list2. Funkce myMapFunc() načítá položky ze seznamu my_list1 a my_list2 a vrací součet obou.

Zde je pracovní příklad sčítání dvou daných seznamů pomocí funkce map().

def myMapFunc(list1, list2):
    return list1+list2

my_list1 = [2,3,4,5,6,7,8,9]
my_list2 = [4,8,12,16,20,24,28]

updated_list = map(myMapFunc, my_list1,my_list2)
print(updated_list)
print(list(updated_list))

Výstup:

<map object at 0x0000004D5F751860>
[6, 11, 16, 21, 26, 31, 36]

Příklad 2: Předání jedné n-tice a iterátoru seznamu funkci map()

Ve funkci map() použijeme iterátor seznamu a n-tice. Funkce myMapFunc() přiřazená funkci map() načte položky ze seznamu a n-tice. Položky budou spojeny podtržítkem (_). Pracovní příklad je uveden níže:

def myMapFunc(list1, tuple1):
    return list1+"_"+tuple1

my_list = ['a','b', 'b', 'd', 'e']
my_tuple = ('PHP','Java','Python','C++','C')

updated_list = map(myMapFunc, my_list,my_tuple)
print(updated_list)
print(list(updated_list))

Výstup:

<map object at 0x00000059F37BB4E0>
['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']

Nejčastější dotazy

Oba aplikují operaci na každou položku. Seznamové porozumění je často čitelnější a vrací přímo seznam, zatímco map() vrací lazy objekt map a může být rychlejší při opětovném použití existující pojmenované funkce.

Ne. map() nikdy nemění původní iterovatelný objekt. Přečte každý prvek, aplikuje vaši funkci a vytvoří nový objekt typu „lazy map“, přičemž zdrojový seznam, n-tici nebo řetězec ponechá nedotčený.

In Python 3, map() je líný: vrací objekt mapy, který počítá hodnoty pouze při iteraci. To šetří paměť u velkých dat. Pro získání výsledků jej zabalte do list() nebo jej projděte smyčkou.

Funkce map() transformuje každou položku, filter() ponechává pouze položky, které prošly testem, a reduce() (z functools) slučují všechny položky do jedné hodnoty. Společně pokrývají operace transformace, výběru a agregace.

Pokud se iterovatelné objekty liší délkou, map() se zastaví na nejkratším. Přebytečné položky v delších iterovatelných objektech jsou ignorovány, takže se nevyvolá žádná chyba a výsledek odpovídá nejkratšímu iterovatelnému objektu.

Ne. Objekt mapy je iterátor, který se po jednom průchodu vyčerpá. Jakmile jím projdete smyčkou nebo na něj zavoláte list(), je prázdný. Pokud ho potřebujete znovu použít, nejprve ho převeďte na seznam.

Ve strojovém učení používá map() funkce předběžného zpracování napříč datovými sadami, jako je škálování čísel, tokenizace textu nebo transformace prvků před trénováním. Nabízí čistý a funkční způsob, jak spustit stejnou operaci nad mnoha vzorky.

Ano. GitHub Copilot automaticky doplňuje volání map() správnými funkcemi a iterovatelnými objekty a nástroje umělé inteligence pro agenty mohou refaktorovat smyčky do výrazů map() a poté spustit testy, aby se ověřilo, že chování zůstalo nezměněno.

Shrňte tento příspěvek takto: