Python map()-funksjon med EKSEMPLER

⚡ Smart oppsummering

Python map() bruker en gitt funksjon på hvert element i en itererbar variabel, for eksempel en liste, tuple, sett, ordbok eller streng. Den returnerer et lazy map-objekt som du konverterer med list() eller itererer ved hjelp av en løkke.

  • 🔢 Syntaks: map() tar en funksjon pluss én eller flere iterabler og bruker den funksjonen på hvert element.
  • 🔁 Returverdi: map() returnerer et lazy map-objekt, så pakk det inn i list(), tuple() eller set() for å se resultatene.
  • 🧩 Iterables: Lister, tupler, sett, ordbøker og strenger fungerer alle som input til map().
  • Lambda: Ved å koble map() med en lambda unngår man å definere en separat navngitt funksjon for enkle transformasjoner.
  • Flere iterabler: Å sende flere iterabler bruker funksjonen parallelt på tvers av dem, stoppping på det korteste.
  • 🤖 AI-hjelp: AI-assistenter som GitHub Copilot genererer map()-kall, og transformasjoner i map-stil mater datapipelines i maskinlæring.

Python map() Funksjon

syntax

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

Parametre

Her er to viktige parametere:

  • funksjon: En obligatorisk funksjon som skal gis til map(), som vil bli brukt på alle elementene som er tilgjengelige i iteratoren.
  • iterator: Et obligatorisk itererbart objekt. Det kan være en liste, en tuple osv. Du kan sende flere iteratorobjekter til map()-funksjonen.

Returverdi

map()-funksjonen bruker den gitte funksjonen på alle elementene i iteratoren og returnerer et itererbart map-objekt, dvs. en tuple, en liste osv.

Hvordan fungerer map()-funksjonen?

map()-funksjonen tar to inndata: en funksjon og et itererbart objekt. Funksjonen som er gitt til map() er en normalfunksjon, og den itererer over alle verdiene som finnes i det itererbare objektet.

Tenk for eksempel at du har en liste med tall, og du vil finne kvadratet til hvert av tallene.

For å få resultatet trenger vi en funksjon som returnerer kvadratet av det gitte tallet. Funksjonen er som følger:

def square(n):
	return n*n

Listen over elementer vi ønsker å finne kvadratet for er som følger:

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

La oss nå bruke den innebygde map()-funksjonen til å få kvadratet av hvert av elementene i my_list.

Den endelige koden 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))

Utgang:

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

Utdataene fra map()-funksjonen, som vist ovenfor, er et kartobjekt som vises på skjermen som .

Du må iterere utdataene fra map() ved hjelp av en for-loop eller list()-metoden for å få det endelige resultatet. Jeg har brukt list() i koden for å vise verdiene i den gitte listen.

Så ved å bruke map()-funksjonen kan vi få kvadratet av hvert tall. Listen gitt til map() var [2,3,4,5,6,7,8,9], og ved å bruke funksjonen square() fikk vi [4, 9, 16, 25, 36, 49, 64, 81].

map()-funksjonen bruker funksjonen square() på alle elementene i listen. For eksempel tar den variabelen my_list og oppdaterer listen med kvadratet av hvert tall. Utdataene lagres i variabelen updated_list.

Bruker map() med Python innebygde funksjoner

Ocuco Python map()-funksjonen er en innebygd funksjon og kan også brukes med andre innebygde funksjoner tilgjengelig i PythonI dette eksemplet skal vi bruke Python round() innebygd funksjon som runder av de gitte verdiene.

Eksempel:

Listen jeg har er my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Jeg trenger de avrundede verdiene for hvert element i listen, så vi bruker round() som funksjon for å 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))

Utgang:

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

Funksjonen round() brukes på alle elementene i listen, og den returnerer en liste med alle verdier avrundet, som vist i utdataene.

Bruke map() med en streng som en iterator

Vi kan også bruke map() på en streng. I Python, fungerer en streng som en array, så vi kan enkelt bruke den inne i map().

I dette eksemplet har vi en funksjon myMapFunc() som tar seg av å konvertere den gitte strengen til store bokstaver. Funksjonen myMapFunc() er gitt til map()-funksjonen. map()-funksjonen vil ta seg av å konvertere den gitte strengen til store bokstaver ved å 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="")

Utgang:

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

Bruke map() med en liste over Numbers

For å jobbe med en liste i map(), tar vi en liste med tall og multipliserer hvert tall i listen med 10.

Listen vi skal bruke er [2,3,4,5,6,7,8,9]. Funksjonen myMapFunc() tar seg av å multiplisere det gitte tallet med 10. Funksjonen gis 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))

Utgang:

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

Resultatet vi ser er at hvert tall i listen multipliseres med 10.

Bruke map() med Tuple

En tuppel er en gjenstand i Python som har elementer atskilt med komma og omsluttet av runde parenteser. I dette eksemplet tar vi en tuple med strengverdier. Funksjonen vi bruker vil konvertere de gitte verdiene til store bokstaver.

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

Utgang:

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

Utdataene vi får er en tuple back med alle verdiene i den konvertert til store bokstaver.

Bruke map() med Dictionary

A ordbok i Python opprettes ved hjelp av krøllparenteser ({}). Siden ordboken er en iterator, kan du bruke den inne i map()-funksjonen. La oss nå bruke en ordbok som en iterator inne i map().

Følgende eksempel viser hvordan en ordbokiterator 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))

Utgang:

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

Bruke map() med Set

Et sett i Python er en uordnet samling av elementer i krøllparenteser ({}). Siden set() også er en iterator, kan du bruke den inne i map()-funksjonen.

Her er et fungerende eksempel på bruk av et sett 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))

Utgang:

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

Bruker map() med Lambda-funksjon

In Python, brukes lambda-uttrykk for å konstruere anonyme funksjoner. Du må bruke lambda nøkkelordet akkurat som du bruker def for å definere normale funksjoner.

Så i dette eksemplet skal vi bruke lambda-funksjonen i map(). Lambda-funksjonen vil multiplisere hver verdi 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))

Utgang:

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

Bruk av flere iteratorer i map()-funksjonen

Eksempel 1: Sende to listeiteratorer til map()

Du kan sende mer enn én iterator, f.eks. en liste, en tuple osv., samtidig til map()-funksjonen.

Hvis du for eksempel vil legge til to lister, kan det samme gjøres ved hjelp av map()-funksjonen. Vi skal bruke to lister, my_list1 og my_list2.

I eksemplet nedenfor legges det første elementet i my_list1 til det første elementet i my_list2. Funksjonen myMapFunc() tar inn elementer fra my_list1 og my_list2 og returnerer summen av begge.

Her er et eksempel på hvordan man legger sammen to gitte lister ved hjelp av map()-funksjonen.

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

Utgang:

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

Eksempel 2: Sende én tuple og en listeiterator til map()

Vi skal bruke en liste- og en tupel-iterator i map()-funksjonen. Funksjonen som er gitt til map(), myMapFunc(), vil hente elementene fra listen og tupelen. Elementene vil bli koblet sammen med et understrek (_). Et fungerende eksempel 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))

Utgang:

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

Spørsmål og svar

Begge bruker en operasjon på hvert element. En listeforståelse er ofte mer lesbar og returnerer en liste direkte, mens map() returnerer et lazy map-objekt og kan være raskere når man gjenbruker en eksisterende navngitt funksjon.

Nei. map() endrer aldri den opprinnelige iterablen. Den leser hvert element, bruker funksjonen din og produserer et nytt lazy map-objekt, og lar kildelisten, tuplen eller strengen være urørt.

In Python 3, map() er lat: den returnerer et kartobjekt som bare beregner verdier når det itereres. Dette sparer minne på store mengder data. Pakk det inn i list() eller kjør en løkke over det for å få resultater.

map() transformerer alle elementer, filter() beholder kun elementer som består en test, og reduce() (fra functools) kombinerer alle elementer til én enkelt verdi. Sammen dekker de transformerings-, selekterings- og aggregeringsoperasjoner.

Når iterabler varierer i lengde, stopper map() ved den korteste. Ekstra elementer i de lengre iterablene ignoreres, slik at ingen feil oppstår og resultatet samsvarer med den korteste iterablen.

Nei. Et kartobjekt er en iterator som er uttømt etter én omgang. Når du har løkket gjennom det eller kalt list() på det, er det tomt. Konverter det først til en liste hvis du trenger å bruke det om igjen.

I maskinlæring bruker map() forbehandlingsfunksjoner på tvers av datasett, for eksempel skalering av tall, tokenisering av tekst eller transformering av funksjoner før trening. Det gir en ren og funksjonell måte å kjøre den samme operasjonen over mange prøver.

Ja. GitHub Copilot fullfører map()-kall automatisk med riktig funksjon og iterabler, og agentiske AI-verktøy kan omstrukturere løkker til map()-uttrykk, og deretter kjøre testene dine for å bekrefte at virkemåten er uendret.

Oppsummer dette innlegget med: