Python map() funksjon, forklart med eksempler

I denne opplæringen lærer du hvordan du bruker Python map()-funksjonen til å bruke en funksjon på alle elementer i en iterabel.

Python støtter det funksjonelle programmeringsparadigmet som lar deg definere oppgaver som beregning av funksjoner programmatisk. Du kan behandle Python-funksjoner som objekter: en funksjon kan ta en annen funksjon som en parameter og returnere en annen funksjon.

Map()-funksjonen tar inn en funksjon som et argument og lar deg bruke den på alle elementer i en sekvens.

Ved slutten av denne opplæringen vil du kunne bruke Python map()-funksjonen – for å omskrive detaljerte løkker og listeforståelser. Du skal kode flere eksempler for å forstå de forskjellige måtene du kan bruke map()-funksjonen på.

Slik bruker du en funksjon på elementer i en Python-liste

La oss starte diskusjonen med et eksempel.👩‍🏫

Her er nums en liste over tall.

nums = [2,4,3,7]

Deretter vurderer funksjonen self_pow(). Funksjonen self_pow() tar inn et tall som argument og returnerer tallet hevet til potensen av selve tallet: n**n.

I Python er ** eksponentieringsoperatoren. a**b returnerer verdien av a hevet til potensen b, ab.

def self_pow(n):
  return n**n

GJØRE: For å lage en ny liste nums_pow ved å bruke funksjonen self_pow() på hvert element i listen nums.

Brukes for Loop

For å gjøre dette kan du bruke for loops i Python:

  • For hvert tall i nums-listen, kall funksjonen self_pow() med num som argument.
  • Legg til resultatet av funksjonskallet til den nye listen nums_pow.
nums_pow = []

for num in nums:
  nums_pow.append(self_pow(num))

print(nums_pow)

I utgangen heves hvert tall til seg selv. Elementene i nums_pow-listen er som følger: 22, 44, 33,77.

Output
[4, 256, 27, 823543]

Bruke listeforståelse

Du kan gjøre dette kortfattet ved å bruke listeforståelse. Fra den eksplisitte for-løkken ovenfor kan vi identifisere utgangsuttrykket og listen å gå gjennom.

Vi kan deretter endre det generiske listeforståelsesuttrykket:

new_list = [<output expression> for item in iterable]

Listeforståelsesuttrykket for å generere nums_pow-listen er som følger:

nums_pow = [self_pow(num) for num in nums]
print(nums_pow)

Utgangen er den samme som den fra bruk for loops, som forventet.

Output
[4, 256, 27, 823543]

I stedet for sløyfe- og listeforståelse, kan du bruke Python map()-funksjonen med en kortfattet syntaks og hjelper deg med å bruke funksjonen på alle elementer i en iterabel. La oss starte med å lære syntaksen til kartfunksjonen.

  Hvordan forlate en gruppe i Viber

Python map() Funksjon Syntaks

Den generelle syntaksen for å bruke Python map()-funksjonen er som følger:

map(function, iterable_1,[iterable_2,...,iterable_n])

Map()-funksjonen tar inn minst to argumenter, en funksjon og en iterabel.

I syntaksen ovenfor:

  • funksjon angir en Python-funksjon eller generelt en hvilken som helst Python-kallbar. Dette inkluderer brukerdefinerte og innebygde funksjoner, klasser, instans- og klassemetoder og mer.
  • iterable er en hvilken som helst gyldig Python iterabel, for eksempel en liste, tuppel og streng.
  • Map()-funksjonen gjelder, og funksjonen brukes til hvert element i iterable.

Hva returnerer map()-funksjonen?

Den returnerer et kartobjekt. Du kan deretter kaste kartobjektet til en liste ved å bruke syntaksen: list(map(function,iterable)).

Avhengig av brukstilfellet kan du støpe det inn i en Python-tuppel.

Nå som du har lært syntaksen til Python map()-funksjonen, la oss begynne å kode eksempler.

Du bør ha Python 3.x å følge sammen med denne opplæringen. Ellers kan du kjøre kodebitene i tipsbilk.net online Python editor.

Slik bruker du map()-funksjonen med brukerdefinerte funksjoner

#1. Tidligere hadde vi brukt self_pow()-funksjonen på hvert tall i nums-listen. I syntaksen for map()-funksjonen kan vi sende inn funksjonen self_pow og listen nums som argumenter.

Merk: Du bør bare angi funksjonens navn og ikke et funksjonskall. Bruk self_pow og ikke self_pow().

Map()-funksjonen returnerer et kartobjekt.

print(map(self_pow,nums))

<map object at 0x7f7d315c14d0>

Vi kan deretter kaste kartobjektet inn i en liste ved å bruke list()-funksjonen, som vist nedenfor.

nums_pow = list(map(self_pow,nums))
print(nums_pow)

Her er utdataene der hvert num i nums er kartlagt til numnum i nums_pow-listen.

Output
[4, 256, 27, 823543]

#2. Tenk på følgende funksjon inch_to_cm() som konverterer tommer til centimeter. 1 tomme = 2,54 cm.

def inch_to_cm(inch):
  return inch*2.54

For å konvertere tommeverdiene i tommelisten til centimeter, kan du bruke map()-funksjonen som vist i kodecellen nedenfor.

inches = [5.54,3.4,1,25,8.2]
cms = list(map(inch_to_cm,inches))
print(cms)

CMS-listen inneholder tomme-verdiene uttrykt i centimeter.

Output
[14.0716, 8.636, 2.54, 63.5, 20.828]

Slik bruker du map()-funksjonen med innebygde funksjoner

I denne delen lærer vi hvordan du bruker map() med innebygde funksjoner i Python.

#1. Listestrengene er en liste over programmeringsspråk. Du vil lage en ny liste strings_upper som inneholder programmeringsspråkstrengene med store bokstaver.

strings = ['JavaScript','Rust','Python','Go']

Den innebygde strengmetoden .upper() virker på en streng og returnerer en kopi formatert med store bokstaver.

strings_upper = list(map(str.upper,strings)) 
print(strings_upper)

Listen strings_upper inkluderer strenger i listestrengene formatert med store bokstaver.

Output
['JAVASCRIPT', 'RUST', 'PYTHON', 'GO']

#2. Den innebygde len()-funksjonen i Python tar inn en sekvens som argument og returnerer lengden. For å finne lengden på hver av strengene i strenglisten, kan vi bruke map()-funksjonen og bruke lengdefunksjonen på hver streng, som vist nedenfor.

strings_len = list(map(len,strings))
print(strings_len)
Output
[10, 4, 6, 2]

#3. Du kan bruke map()-funksjonen med andre samlinger som tuples.

  Synkroniser nettstedspesifikke notater på tvers av datamaskiner

Følgende eksempel inneholder en tuppel som inneholder informasjon om antall soverom, område og by et hus ligger i.

I Python returnerer type()-funksjonen datatypen til et hvilket som helst Python-objekt. For å få datatypen til alle elementene i denne tuppelen, kan du bruke map()-funksjonen til å kalle typefunksjonen på hvert tuppelelement.

house = (2,758.5,'Bangalore')
house_elt_type = tuple(map(type,house))
print(house_elt_type)

Vi har støpt kartobjektet til en tuppel. Du kan også kaste inn i en liste eller en hvilken som helst annen samling.

I utdataene nedenfor ser vi at datatypene til 2, 758.5 ​​og Bangalore har blitt utledet som henholdsvis «int», «float» og «str».

Output
(<class 'int'>, <class 'float'>, <class 'str'>)

#4. I Python kan du importere innebygde moduler og bruke funksjonene som er definert i modulene.

For å beregne kvadratroten av hvert tall i talllisten, kan du bruke kvadratrotfunksjonen sqrt fra matematikkmodulen.

import math
nums = [30,90,34,45,97]
nums_sqrt = list(map(math.sqrt,nums))
print(nums_sqrt)
Output
[5.477225575051661, 9.486832980505138, 5.830951894845301, 6.708203932499369, 9.848857801796104]

Ovennevnte utdata er vanskelig å analysere og følge. Det kan være lurt å runde hver kvadratrotverdi for å si to desimaler.

Hvordan avrunde et flytende punktnummer i Python

La oss definere en funksjon round_2() som tar en flyttallverdi og runder den av til to desimaler.

def round_2(num):
  return round(num,2)

Nå kan du bruke map()-funksjonen med round_2 og nums_sqrt-listen.

nums_sqrt_round = list(map(round_2,nums_sqrt))
print(nums_sqrt_round)
Output
[5.48, 9.49, 5.83, 6.71, 9.85]

Du kan også bruke nestede map()-funksjoner, der den indre kartfunksjonen brukes til å beregne kvadratrotlisten nums_sqrt, og den ytre kartfunksjonen utfører avrundingsoperasjonen.

nums_sqrt_round = list(map(round_2,list(map(math.sqrt,nums))))
print(nums_sqrt_round)
Output
[5.48, 9.49, 5.83, 6.71, 9.85]

Utgangene er identiske i begge de ovennevnte tilnærmingene. Du bør imidlertid sørge for at koden er lesbar og vedlikeholdbar når nesting-funksjoner som vist ovenfor.

Slik bruker du map()-funksjonen med Lambda-funksjoner

I de forrige avsnittene lærte du hvordan du bruker Python map()-funksjonen med innebygde og brukerdefinerte funksjoner. Du vil nå lære hvordan du bruker map()-funksjonen med lambda-funksjoner, som er anonyme i Python.

Noen ganger vil du ha en funksjon hvis hovedtekst inneholder bare én linje med kode, og du må kanskje bruke funksjonen bare én gang og ikke referere til den andre steder i programmet. Du kan definere slike funksjoner som en lambda-funksjon i Python.

Merk: lambda args: uttrykk er den generelle syntaksen for å bruke en Python lambda-funksjon.

#1. Vurder følgende listestrenger. Anta at du vil ha en liste strings_rev – som inneholder en omvendt kopi av hver av strengene.

strings = ['JavaScript','Rust','Python','Go']

Vi kan snu en Python-streng ved å bruke strengskjæring.

  Hvordan dele Vudu-biblioteket

Merk: Dette er en generalisering av string slicing expression str[start:stop:step].

– Uten start- og stoppverdiene starter skiven ved begynnelsen av strengen og strekker seg opp til slutten av strengen.
– Negative verdier av trinn gir skiver som starter fra slutten av strengen.
– Derfor, str[::-1] returnerer en omvendt kopi av str.

Du kan bruke denne lambda-funksjonen: lambda x:x[::-1]Inne i kartfunksjonen, som vist nedenfor.

strings_rev = list(map(lambda x:x[::-1],strings))
print(strings_rev)

Som med andre eksempler, kaster vi kartobjektet inn i en liste. I utgangen ser vi at hver av strengene i listestrengene har blitt reversert.

Output
['tpircSavaJ', 'tsuR', 'nohtyP', 'oG']

#2. I forrige seksjon beregnet vi kvadratroten av hvert tall i talllisten og avrundet deretter hver kvadratrotverdi til to desimaler.

Vi brukte funksjonen round_2() for å gjøre dette. La oss omskrive round_2()-funksjonen som en lambda-funksjon og bruke den med map()-funksjonen beskrevet nedenfor.

nums_sqrt_round_l =list(map(lambda num:round(num,2),nums_sqrt))
print(nums_sqrt_round_l)

Som vist nedenfor, er utgangen identisk med det vi fikk ved å bruke round_2()-funksjonen.

Output
[5.48, 9.49, 5.83, 6.71, 9.85]

Hvordan bruke map()-funksjonen med flere iterables

I eksemplene vi har sett, brukte vi en funksjon på alle elementer av nøyaktig én iterabel.

Noen ganger kan vi ha funksjoner som tar inn to eller flere argumenter. I dette tilfellet lagres hvert argument i en liste eller en lignende samling.

Vi kan også bruke funksjonen Python map() med flere lister.

#1. Tenk på følgende funksjon area() som aksepterer lengden og bredden som input og returnerer arealet, lengde*bredde.

def area(length,breadth):
  return length*breadth

Lengden og bredden til forskjellige rektangler er lagret i to separate lister, henholdsvis lengder og bredder.

lengths = [4,8,10,18]
breadths = [9,4,6,11]

Vi kan bruke map()-funksjonen til å bruke arealfunksjonen på listene ovenfor ved å sende inn både lengde- og breddelistene.

areas = list(map(area,lengths,breadths))
print(areas)

Fordi funksjonsområdet godtar to argumenter, brukes lengde- og breddeverdiene fra henholdsvis listene lengder bredder.

Output
[36, 32, 60, 198]

#2. Python matematikkmodulen har loggfunksjonen som hjelper oss å beregne logaritmen til et tall til en hvilken som helst base.

Merk: log(x, base) returnerer verdien til log x til basen spesifisert av verdibasen, log base x. Hvis grunntallet ikke er spesifisert, er standard grunnverdi e (log beregner den naturlige logaritmen).

I dette eksemplet:

  • Listen x tilsvarer verdiene du vil beregne logaritmen for.
  • Basislisten inneholder alle grunnverdiene som skal brukes i logaritmeberegningen.
x = [2,6,12,10]
base = [2,3,2,5]

Vi kan bruke funksjonen Python map() med math.log, listene, x og base for å få den nye listen log_x, som følger.

log_x = list(map(math.log,x,base))
print(log_x)

Her er utgangen.

Output
[1.0, 1.6309297535714573, 3.5849625007211565, 1.4306765580733933]

Konklusjon

Her er et sammendrag av det du har lært i denne opplæringen:

  • Python map()-funksjonen tar inn minst to argumenter: en funksjon og en iterable, med syntaksmap(function, iterable(s)).
  • Funksjonen kan være hvilken som helst gyldig Python-kallbar.
  • Når funksjonen tar inn k argumenter, bruk map() funksjonen med funksjonen og hvert av k argumentene i en iterabel.

Deretter lærer du å jobbe med sett i Python.