Python map()-funktion med EXEMPEL

⚡ Smart sammanfattning

Python map() tillämpar en given funktion på varje element i en iterabel variabel, såsom en lista, tupel, mängd, ordbok eller sträng. Den returnerar ett lazy map-objekt som du konverterar med list() eller itererar med en loop.

  • 🔢 Syntax: map() tar en funktion plus en eller flera itererbara element och tillämpar den funktionen på varje element.
  • 🔁 Returvärde: map() returnerar ett lazy map-objekt, så omslut det med list(), tuple() eller set() för att visa resultaten.
  • 🧩 Itererbara: Listor, tupler, mängder, ordböcker och strängar fungerar alla som indata för map().
  • Lambda: Att para ihop map() med en lambda undviker att definiera en separat namngiven funktion för enkla transformationer.
  • Flera itererbara versioner: Att skicka flera iterabler applicerar funktionen parallellt över dem, stoppaping på kortast möjliga tid.
  • 🤖 AI-hjälp: AI-assistenter som GitHub Copilot genererar map()-anrop, och map-style-transformationer matar datapipelines i maskininlärning.

Python map() Funktion

syntax

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

Driftparametrar

Här är två viktiga parametrar:

  • fungera: En obligatorisk funktion som ska ges till map(), vilken kommer att tillämpas på alla objekt som är tillgängliga i iteratorn.
  • iterator: Ett obligatoriskt itererbart objekt. Det kan vara en lista, en tupel, etc. Du kan skicka flera iteratorobjekt till map()-funktionen.

Returvärde

Funktionen map() tillämpar den givna funktionen på alla objekt inuti iteratorn och returnerar ett itererbart map-objekt, dvs. en tupel, en lista, etc.

Hur fungerar map()-funktionen?

Funktionen map() tar två indata: en funktion och ett itererbart objekt. Funktionen som ges till map() är en normal funktion, och den itererar över alla värden som finns i det itererbara objektet.

Tänk till exempel att du har en lista med siffror och att du vill hitta kvadraten på vart och ett av talen.

För att få utdata behöver vi en funktion som returnerar kvadraten av det givna talet. Funktionen är som följer:

def square(n):
	return n*n

Listan över objekt som vi vill hitta kvadraten för är följande:

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

Nu ska vi använda den inbyggda funktionen map() för att få kvadraten på varje objekt i my_list.

Den slutliga koden är som följer:

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

Produktion:

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

Utdata från map()-funktionen, som visas ovan, är ett kartobjekt som visas på skärmen som .

Du måste iterera utdata från map() med hjälp av en for-loop eller list()-metoden för att få den slutliga utdata. Jag har använt list() i koden för att visa värdena i den givna listan.

Så med hjälp av funktionen map() kan vi få kvadraten på varje tal. Listan som gavs till map() var [2,3,4,5,6,7,8,9], och med funktionen square() fick vi utdata [4, 9, 16, 25, 36, 49, 64, 81].

Funktionen map() tillämpar funktionen square() på alla objekt i listan. Till exempel tar den variabeln my_list och uppdaterar listan med kvadraten av varje tal. Utdata lagras i variabeln updated_list.

Använder map() med Python inbyggda funktioner

Ocuco-landskapet Python map()-funktionen är en inbyggd funktion och kan även användas med andra inbyggda funktioner som finns i PythonI det här exemplet kommer vi att använda oss av Python round() inbyggd funktion som avrundar de givna värdena.

Exempel:

Listan jag har är my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Jag behöver de avrundade värdena för varje objekt som finns i listan, så vi kommer att använda round() som funktion för att mappa().

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

Produktion:

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

Funktionen round() tillämpas på alla objekt i listan och returnerar en lista med alla värden avrundade, som visas i utdata.

Använder map() med en sträng som en iterator

Vi kan också använda map() på en sträng. I Python, en sträng fungerar som en array, så vi kan enkelt använda den inuti map().

I det här exemplet har vi en funktion myMapFunc() som tar hand om att konvertera den givna strängen till versaler. Funktionen myMapFunc() ges till map()-funktionen. map()-funktionen tar hand om att konvertera den givna strängen till versaler genom att skicka strängen till 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="")

Produktion:

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

Använda map() med en lista över Numbers

För att arbeta med en lista i map() tar vi en lista med tal och multiplicerar varje tal i listan med 10.

Listan vi ska använda är [2,3,4,5,6,7,8,9]. Funktionen myMapFunc() tar hand om att multiplicera det givna talet med 10. Funktionen ges till map() tillsammans med listan.

Exempel:

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

Produktion:

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

Utdata vi ser är att varje tal i listan multipliceras med 10.

Använder map() med Tuple

En tuppel är ett föremål i Python som har objekt separerade med kommatecken och omgivna av runda parenteser. I det här exemplet tar vi en tupel med strängvärden. Funktionen vi använder kommer att konvertera de givna värdena till versaler.

Exempel:

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

Produktion:

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

Utdata vi får är en tupel bakåt med alla värden i den konverterade till versaler.

Använda map() med Dictionary

A ordbok i Python skapas med hjälp av klammerparenteser ({}). Eftersom ordboken är en iterator kan du använda den inuti map()-funktionen. Låt oss nu använda en ordbok som en iterator inuti map().

Följande exempel visar hur en ordboksiterator fungerar inuti 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))

Produktion:

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

Använder map() med Set

En uppsättning i Python är en oordnad samling av objekt inom klammerparenteser ({}). Eftersom set() också är en iterator kan du använda den inuti map()-funktionen.

Här är ett fungerande exempel på hur man använder en uppsättning som en iterator inuti 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))

Produktion:

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

Använder map() med Lambda-funktion

In Python, används lambda-uttryck för att konstruera anonyma funktioner. Du måste använda nyckelordet lambda precis som du använder def för att definiera normala funktioner.

Så i det här exemplet ska vi använda lambdafunktionen i map(). Lambdafunktionen multiplicerar varje värde i listan med 10.

Exempel:

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

Produktion:

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

Använda flera iteratorer inuti map()-funktionen

Exempel 1: Skicka två listiteratorer till map()

Du kan skicka mer än en iterator, dvs. en lista, en tupel etc., samtidigt till map()-funktionen.

Om du till exempel vill lägga till två listor kan du göra samma sak med hjälp av funktionen map(). Vi kommer att använda två listor, my_list1 och my_list2.

I exemplet nedan läggs det första objektet i my_list1 till det första objektet i my_list2. Funktionen myMapFunc() tar in objekt från my_list1 och my_list2 och returnerar summan av båda.

Här är ett exempel på hur man lägger till två givna listor med hjälp av funktionen 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))

Produktion:

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

Exempel 2: Skicka en tupel och en listiterator till map()

Vi kommer att använda en lista och en tupel-iterator i map()-funktionen. Funktionen som ges till map(), myMapFunc(), kommer att hämta objekten från listan och tupeln. Objekten kommer att kopplas samman med ett understreck (_). Exemplet visas nedan:

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

Produktion:

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

Vanliga frågor

Båda tillämpar en operation på varje objekt. En listförståelse är ofta mer läsbar och returnerar en lista direkt, medan map() returnerar ett lazy map-objekt och kan vara snabbare vid återanvändning av en befintlig namngiven funktion.

Nej. map() ändrar aldrig den ursprungliga itererbara filen. Den läser varje element, tillämpar din funktion och producerar ett nytt lazy map-objekt, vilket lämnar källistan, tupeln eller strängen orörd.

In Python 3, map() är lat: den returnerar ett map-objekt som endast beräknar värden när det itereras. Detta sparar minne på stora datamängder. Slå in det i list() eller loopa över det för att få resultat.

map() transformerar varje objekt, filter() behåller endast objekt som klarar ett test, och reduce() (från functools) kombinerar alla objekt till ett enda värde. Tillsammans täcker de transformerings-, select- och aggregeringsoperationer.

När iterabler skiljer sig åt i längd stannar map() vid den kortaste. Extra element i de längre iterablerna ignoreras, så inget fel genereras och resultatet matchar den kortaste iterablen.

Nej. Ett kartobjekt är en iterator som är slut efter ett pass. När du loopar igenom det eller anropar list() på det är det tomt. Konvertera det först till en lista om du behöver återanvända det.

Inom maskininlärning tillämpar map() förbehandlingsfunktioner över datauppsättningar, såsom att skala tal, tokenisera text eller transformera funktioner före träning. Det ger ett rent och funktionellt sätt att köra samma operation över många exempel.

Ja. GitHub Copilot autokompletterar map()-anrop med rätt funktion och iterabler, och agentiska AI-verktyg kan omfaktorera loopar till map()-uttryck och sedan köra dina tester för att bekräfta att beteendet är oförändrat.

Sammanfatta detta inlägg med: