Python map() Funktion med EKSEMPLER

⚡ Smart opsummering

Python map() anvender en given funktion på hvert element i en iterabel funktion, såsom en liste, tuple, sæt, ordbog eller streng. Den returnerer et lazy map-objekt, som du konverterer med list() eller itererer ved hjælp af en løkke.

  • 🔢 Syntaks: map() tager en funktion plus en eller flere iterabler og anvender denne funktion på hvert element.
  • 🔁 Returværdi: map() returnerer et dovent map-objekt, så pak det ind i list(), tuple() eller set() for at se resultaterne.
  • 🧩 Iterables: Lister, tupler, sæt, ordbøger og strenge fungerer alle som input til map().
  • Lambda: Ved at parre map() med en lambda undgår man at definere en separat navngivet funktion til simple transformationer.
  • Flere iterabler: Ved at sende flere iterabler anvendes funktionen parallelt på tværs af dem, stopping på det korteste.
  • 🤖 AI assistance: AI-assistenter som GitHub Copilot genererer map()-kald, og map-style transformationer feeder data pipelines i maskinlæring.

Python map() Funktion

Syntaks

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

Driftsparametre

Her er to vigtige parametre:

  • fungere: En obligatorisk funktion, der skal gives til map(), og som vil blive anvendt på alle elementer, der er tilgængelige i iteratoren.
  • iterator: Et obligatorisk itererbart objekt. Det kan være en liste, en tuple osv. Du kan sende flere iteratorobjekter til map()-funktionen.

Returværdi

Funktionen map() anvender den givne funktion på alle elementerne i iteratoren og returnerer et itererbart map-objekt, dvs. en tuple, en liste osv.

Hvordan fungerer map()-funktionen?

Funktionen map() tager to input: en funktion og et itererbart objekt. Funktionen givet til map() er en normal funktion, og den itererer over alle de værdier, der findes i det itererbare objekt.

Overvej for eksempel, at du har en liste over tal, og du vil finde kvadratet af hvert af tallene.

For at få outputtet skal vi bruge en funktion, der returnerer kvadratet af det givne tal. Funktionen er som følger:

def square(n):
	return n*n

Listen over elementer, som vi vil finde kvadratet for, er som følger:

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

Lad os nu bruge den indbyggede funktionen map() til at finde kvadratet af hvert af elementerne i my_list.

Den endelige kode er som følger:

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]

Outputtet fra map()-funktionen, som vist ovenfor, er et kortobjekt, der vises på skærmen som .

Du skal iterere outputtet fra map() ved hjælp af en for-loop eller list()-metoden for at få det endelige output. Jeg har brugt list() i koden til at vise værdierne i den givne liste.

Så ved at bruge map()-funktionen kan vi få kvadratet af hvert tal. Listen givet til map() var [2,3,4,5,6,7,8,9], og ved at bruge funktionen square() fik vi [4, 9, 16, 25, 36, 49, 64, 81].

Funktionen map() anvender funktionen square() på alle elementerne i listen. For eksempel tager den variablen my_list og opdaterer listen med kvadratet af hvert tal. Outputtet gemmes i variablen updated_list.

Brug af map() med Python indbyggede funktioner

Python map()-funktionen er en indbygget funktion og kan også bruges med andre indbyggede funktioner, der er tilgængelige i PythonI dette eksempel vil vi bruge Python round() er en indbygget funktion, der afrunder de givne værdier.

Eksempel:

Den liste jeg har er my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Jeg har brug for de afrundede værdier for hvert element på listen, så vi bruger round() som funktionen til at mappe().

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]

Funktionen round() anvendes på alle elementerne på listen, og den returnerer en liste med alle værdier afrundet, som vist i outputtet.

Brug af map() med en streng som en iterator

Vi kan også gøre brug af map() på en streng. I Python, fungerer en streng som et array, så vi kan nemt bruge den inde i map().

I dette eksempel har vi en funktion myMapFunc(), der konverterer den givne streng til store bogstaver. Funktionen myMapFunc() gives til map()-funktionen. map()-funktionen vil konvertere den givne streng til store bogstaver ved at sende strengen til 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="")

Output:

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

Brug af map() med en liste over Numbers

For at arbejde med en liste i map() tager vi en liste af tal og ganger hvert tal i listen med 10.

Den liste, vi skal bruge, er [2,3,4,5,6,7,8,9]. Funktionen myMapFunc() sørger for at gange det givne tal med 10. Funktionen gives til map() sammen med listen.

Eksempel:

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]

Det output, vi ser, er, at hvert tal i listen ganges med 10.

Brug af map() med Tuple

En tupel er en genstand i Python der har elementer adskilt af kommaer og omsluttet af runde parenteser. I dette eksempel tager vi en tuple med strengværdier. Den funktion, vi bruger, konverterer de givne værdier til store bogstaver.

Eksempel:

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

Det output, vi får, er en tuple back med alle værdierne i den konverteret til store bogstaver.

Brug af map() med ordbog

A ordbog i Python oprettes ved hjælp af krøllede parenteser ({}). Da ordbogen er en iterator, kan du bruge den i map()-funktionen. Lad os nu bruge en ordbog som en iterator i map().

Følgende eksempel viser, hvordan en ordbogsiterator fungerer i 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))

Output:

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

Brug af map() med Set

Et sæt i Python er en uordnet samling af elementer i krøllede parenteser ({}). Da set() også er en iterator, kan du bruge den i map()-funktionen.

Her er et fungerende eksempel på brugen af ​​et sæt som en iterator i 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))

Output:

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

Brug af map() med Lambda-funktion

In Python, bruges lambda-udtryk til at konstruere anonyme funktioner. Du bliver nødt til at bruge lambda nøgleordet ligesom du bruger def til at definere normale funktioner.

Så i dette eksempel bruger vi lambda-funktionen i map(). Lambda-funktionen ganger hver værdi i listen med 10.

Eksempel:

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]

Brug af flere iteratorer i map()-funktionen

Eksempel 1: Overførsel af to listeiteratorer til map()

Du kan sende mere end én iterator, dvs. en liste, en tuple osv., alle på samme tid til map()-funktionen.

Hvis du for eksempel vil tilføje to lister, kan det samme gøres ved hjælp af map()-funktionen. Vi vil bruge to lister, my_list1 og my_list2.

I eksemplet nedenfor tilføjes det første element i my_list1 til det første element i my_list2. Funktionen myMapFunc() tager elementer fra my_list1 og my_list2 og returnerer summen af ​​begge.

Her er et eksempel på, hvordan man tilføjer to givne lister ved hjælp af map()-funktionen.

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]

Eksempel 2: Overførsel af én tuple og en listeiterator til map()

Vi vil bruge en liste- og en tuple-iterator i map()-funktionen. Funktionen myMapFunc(), der er givet til map(), vil hente elementerne fra listen og tuplen. Elementerne vil blive forbundet med et understregningstegn (_). Eksemplet på arbejdet er vist nedenfor:

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

Ofte Stillede Spørgsmål

Begge anvender en operation på hvert element. En listeforståelse er ofte mere læsbar og returnerer en liste direkte, mens map() returnerer et dovent map-objekt og kan være hurtigere, når en eksisterende navngivet funktion genbruges.

Nej. map() ændrer aldrig den oprindelige iterable. Den læser hvert element, anvender din funktion og producerer et nyt lazy map-objekt, hvor kildelisten, tuplen eller strengen ikke ændres.

In Python 3, map() er doven: den returnerer et map-objekt, der kun beregner værdier, når det itereres. Dette sparer hukommelse på store mængder data. Omslut det i list() eller løb hen over det for at få resultater.

map() transformerer alle elementer, filter() beholder kun elementer, der består en test, og reduce() (fra functools) kombinerer alle elementer til en enkelt værdi. Sammen dækker de transformerings-, select- og aggregeringsoperationer.

Når iterabler varierer i længde, stopper map() ved den korteste. Ekstra elementer i de længere iterabler ignoreres, så der ikke opstår nogen fejl, og resultatet matcher den korteste iterable.

Nej. Et kortobjekt er en iterator, der er opbrugt efter én gennemgang. Når du har gennemgået det i en løkke eller kaldet list() på det, er det tomt. Konverter det først til en liste, hvis du har brug for at genbruge det.

I maskinlæring anvender map() forbehandlingsfunktioner på tværs af datasæt, såsom skalering af tal, tokenisering af tekst eller transformering af funktioner før træning. Det giver en ren og funktionel måde at køre den samme operation over mange prøver.

Ja. GitHub Copilot fuldfører automatisk map()-kald med den rigtige funktion og iterabler, og agentiske AI-værktøjer kan omstrukturere loops til map()-udtryk og derefter køre dine tests for at bekræfte, at adfærden er uændret.

Opsummer dette indlæg med: