Python map() függvény példákkal

⚡ Okos összefoglaló

Python A map() egy adott függvényt alkalmaz egy iterálható objektum minden elemére, például listára, tuple-re, halmazra, szótárra vagy karakterláncra. Egy lusta map objektumot ad vissza, amelyet a list() függvénnyel konvertálhatsz, vagy egy ciklus segítségével iterálhatsz.

  • 🔢 Syntax: A map() egy függvényt és egy vagy több iterálható elemet vesz igénybe, és ezt a függvényt alkalmazza minden elemre.
  • 🔁 Visszatérési érték: A map() egy lusta térkép objektumot ad vissza, ezért csomagold be a list(), tuple() vagy set() függvényekbe az eredmények megtekintéséhez.
  • 🧩 Iterálható elemek: A listák, tuple-k, halmazok, szótárak és karakterláncok mind bemenetként működnek a map() függvény számára.
  • Lambda: A map() és a lambda függvény párosítása elkerüli egy külön elnevezett függvény definiálását az egyszerű transzformációkhoz.
  • Több iterálható elem: Több iterálható függvény átadása párhuzamosan alkalmazza őket, stopping a legrövidebb időn belül.
  • 🤖 AI segítség: Az olyan mesterséges intelligencia asszisztensek, mint a GitHub Copilot, map() hívásokat generálnak, és a map-style átalakítja a hírfolyamok adatfolyamait a gépi tanulásban.

Python map() Függvény

Szintaxis

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

paraméterek

Itt van két fontos paraméter:

  • funkció: Egy kötelezően megadandó függvény a map() függvénynek, amely az iterátorban elérhető összes elemre érvényes lesz.
  • iterátor: Kötelezően iterálható objektum. Lehet lista, tuple stb. Több iterátor objektumot is átadhatsz a map() függvénynek.

Visszatérési érték

A map() függvény az adott függvényt az iterátoron belüli összes elemre alkalmazza, és egy iterálható map objektumot ad vissza, azaz egy tuple-t, egy listát stb.

Hogyan működik a map() függvény?

A map() függvény két bemenetet fogad el: egy függvényt és egy iterálható objektumot. A map() függvénynek adott függvény egy normál függvény, amely az iterálható objektumban található összes értékre iterál.

Tegyük fel például, hogy van egy számlistája, és meg szeretné találni az egyes számok négyzetét.

A kimenet megszerzéséhez szükségünk van egy függvényre, amely visszaadja a megadott szám négyzetét. A függvény a következő:

def square(n):
	return n*n

Az elemek listája, amelyek négyzetét meg akarjuk találni, a következő:

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

Most használjuk a map() beépített függvényt a my_list elemeinek négyzetének kiszámításához.

A végső kód a következő:

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))

output:

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

A map() függvény kimenete, ahogy fentebb látható, egy térképobjektum, amely a képernyőn a következőképpen jelenik meg: .

A map() kimenetét egy for ciklussal vagy a list() metódussal kell iterálnod a végső kimenet eléréséhez. A list() metódust használtam a kódban az adott listán belüli értékek megjelenítéséhez.

Tehát a map() függvénnyel megkaphatjuk az egyes számok négyzetét. A map()-nak adott lista a következő volt: [2,3,4,5,6,7,8,9], és a square() függvénnyel kapott kimenet: [4, 9, 16, 25, 36, 49, 64, 81].

A map() függvény a square() függvényt alkalmazza a lista összes elemére. Például a my_list változó értékét veszi, és frissíti a listát az egyes számok négyzetével. A kimenet az updated_list változóban tárolódik.

A map() használata a következővel Python beépített funkciók

Az Python A map() függvény egy beépített függvény, és más beépített funkciókkal is használható PythonEbben a példában a következőt fogjuk használni: Python round() beépített függvény, ami kerekíti a megadott értékeket.

Példa:

A listám a következő: my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Szükségem van a listában szereplő összes elem kerekített értékeire, ezért a round() függvényt fogjuk használni a map() függvényhez.

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))

output:

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

A round() függvény a lista összes elemére vonatkozik, és egy kerekített listát ad vissza, ahogy a kimeneten is látható.

A map() használata egy karakterlánccal iterátorként

A map()-t is használhatjuk egy karakterláncon. In Python, egy karakterlánc tömbként viselkedik, így könnyen használhatjuk a map() függvényen belül.

Ebben a példában van egy myMapFunc() függvényünk, amely a megadott karakterlánc nagybetűssé alakításáért felel. A myMapFunc() függvényt a map() függvénynek adjuk át. A map() függvény a megadott karakterlánc nagybetűssé alakításáért a karakterlánc myMapFunc()-nek való átadásával gondoskodik.

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="")

output:

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

A map() függvény használata egy listával Numbers

Ahhoz, hogy egy listával dolgozzunk a map() függvényben, fogunk egy számokból álló listát, és minden benne lévő számot megszorzunk 10-zel.

A használandó lista a [2,3,4,5,6,7,8,9]. A myMapFunc() függvény a megadott szám 10-zel való szorzását végzi. A függvényt a listával együtt a map() függvénynek adjuk meg.

Példa:

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))

output:

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

A kimenet az, hogy a listában szereplő minden számot megszorozunk 10-zel.

A map() használata a Tuple-vel

A tuple egy objektum benne Python ...amely vesszővel elválasztott és kerek zárójelben lévő elemeket tartalmaz. Ebben a példában egy karakterlánc értékekkel rendelkező tuple-t fogunk venni. A használt függvény nagybetűssé alakítja a megadott értékeket.

Példa:

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))

output:

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

A kapott kimenet egy tuple, amelyben az összes érték nagybetűsre van konvertálva.

A map() használata a szótárral

A szótárban Python kapcsos zárójelek ({}) használatával jön létre. Mivel a szótár egy iterátor, a map() függvényen belül használható. Most használjunk egy szótárt iterátorként a map() függvényen belül.

A következő példa egy szótáriterátor működését mutatja be a map() függvényen belül:

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))

output:

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

A map() használata a Set-tel

Egy meghatározott Python A kapcsos zárójelben ({}) lévő elemek rendezetlen gyűjteménye. Mivel a set() egy iterátor is, a map() függvényen belül használható.

Íme egy működő példa arra, hogyan használhatunk egy halmazt iterátorként a map() függvényen belül:

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))

output:

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

A map() használata Lambda függvénnyel

In Python, a lambda kifejezéseket anonim függvények létrehozására használják. A lambda kulcsszót ugyanúgy kell használnia, mint a def-et a normál függvények meghatározásához.

Ebben a példában tehát a map() függvényen belül fogjuk használni a lambda függvényt. A lambda függvény a lista minden értékét megszorozza 10-zel.

Példa:

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))

output:

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

Több iterátor használata a map() függvényen belül

1. példa: Két lista iterátor átadása a map() függvénynek

Egyszerre több iterátort is küldhetsz a map() függvénynek, azaz egy listát, egy tuple-t stb.

Például, ha két listát szeretnél hozzáadni, ugyanezt megteheted a map() függvénnyel. Két listát fogunk használni, a my_list1-et és a my_list2-t.

Az alábbi példában a my_list1 első eleme hozzáadódik a my_list2 első eleméhez. A myMapFunc() függvény a my_list1 és my_list2 elemeit veszi alapul, és visszaadja mindkettő összegét.

Íme egy működő példa két adott lista összeadására a map() függvénnyel.

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))

output:

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

2. példa: Egy Tuple és egy lista iterátor átadása a map() függvénynek

A map() függvényben egy listát és egy tuple iterátort fogunk használni. A map() függvénynek adott myMapFunc() függvény a listából és a tuple-ből fogja kiolvasni az elemeket. Az elemeket aláhúzásjellel (_) fogjuk összekapcsolni. A működő példa alább látható:

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))

output:

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

GYIK

Mindkettő egy műveletet alkalmaz minden elemre. A listaértelmezés gyakran olvashatóbb és közvetlenül egy listát ad vissza, míg a map() egy lusta map objektumot ad vissza, és gyorsabb lehet egy meglévő elnevezett függvény újrafelhasználásakor.

Nem. A map() soha nem változtatja meg az eredeti iterálható objektumot. Beolvassa az egyes elemeket, alkalmazza a függvényedet, és egy új lusta map objektumot hoz létre, érintetlenül hagyva a forráslistát, tuple-t vagy karakterláncot.

In Python 3, a map() lusta: egy map objektumot ad vissza, amely csak iteráció esetén számít ki értékeket. Ez memóriát takarít meg nagy adatmennyiségek esetén. Csomagold be list()-be, vagy ciklusozz rajta az eredmények eléréséhez.

A map() minden elemet átalakít, a filter() csak a teszten átmenő elemeket tartja meg, a reduce() (a functools-ból) pedig az összes elemet egyetlen értékké egyesíti. Együttesen lefedik az átalakítási, kiválasztási és összesítési műveleteket.

Amikor az iterálható elemek hossza eltérő, a map() a legrövidebbnél megáll. A hosszabb iterálható elemekben lévő extra elemeket figyelmen kívül hagyja, így nem keletkezik hiba, és az eredmény a legrövidebb iterálható elemre illeszkedik.

Nem. A map objektum egy iterátor, amely egy menet után kimerül. Miután végigmegyünk rajta cikluson vagy meghívjuk a list() függvényt, üres lesz. Először alakítsuk át listává, ha újra kell használnunk.

A gépi tanulásban a map() előfeldolgozó függvényeket alkalmaz az adathalmazokon, például számok skálázását, szöveg tokenizálását vagy jellemzők átalakítását a betanítás előtt. Letisztult, funkcionális módot kínál ugyanazon művelet több mintán történő futtatására.

Igen. A GitHub Copilot automatikusan kiegészíti a map() hívásokat a megfelelő függvénnyel és iterálható elemekkel, az ügynökségi mesterséges intelligencia eszközök pedig képesek ciklusokat map() kifejezésekké alakítani, majd tesztek futtatásával megerősíteni a viselkedés változatlanságát.

Foglald össze ezt a bejegyzést a következőképpen: