Python map()-funktio esimerkkeineen

⚡ Älykäs yhteenveto

Python map() soveltaa annettua funktiota jokaiseen iteroitavan kohteen alkioon, kuten listaan, tupleen, joukkoon, sanakirjaan tai merkkijonoon. Se palauttaa laiskan map-objektin, jonka muunnat list():lla tai iteroit silmukan avulla.

  • 🔢 Syntaksi: map() ottaa funktion ja yhden tai useamman iteroitavan objektin ja soveltaa tätä funktiota jokaiseen elementtiin.
  • 🔁 Paluuarvo: map() palauttaa laiskan karttaobjektin, joten kääri se list()-, tuple()- tai set()-funktioon nähdäksesi tulokset.
  • 🧩 Iteroitavat: Listat, tuplet, joukot, sanakirjat ja merkkijonot toimivat kaikki map()-funktion syötteinä.
  • Lambda: map():n ja lambdan yhdistäminen välttää erillisen nimetyn funktion määrittelyn yksinkertaisille muunnoksille.
  • Useita iteroitavia: Useiden iteroitavien yksiköiden välittäminen soveltaa funktiota niiden yli rinnakkain, stopping lyhyimmillään.
  • 🤖 AI-apu: Tekoälyavustajat, kuten GitHub Copilot, luovat map()-kutsuja, ja map-tyyliset muunnokset koneoppimisen datasyötteiden prosesseja.

Python map() Funktio

Syntaksi

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

parametrit

Tässä on kaksi tärkeää parametria:

  • toiminto: map()-funktiolle annettava pakollinen funktio, jota sovelletaan kaikkiin iteraattorissa käytettävissä oleviin alkioihin.
  • iteraattori: Pakollinen iteroitava objekti. Se voi olla lista, tuple jne. Voit välittää useita iteraattoriobjekteja map()-funktiolle.

Palautusarvo

map()-funktio soveltaa annettua funktiota kaikkiin iteraattorin sisällä oleviin alkioihin ja palauttaa iteroitavan karttaobjektin, eli tuplen, listan jne.

Miten map()-funktio toimii?

map()-funktio ottaa kaksi syötettä: funktion ja iteroitavan objektin. Map()-funktiolle annettu funktio on normaali funktio, ja se iteroi kaikkien iteroitavan objektin sisältämien arvojen läpi.

Oletetaan esimerkiksi, että sinulla on luettelo numeroista ja haluat löytää kunkin numeron neliön.

Saadaksemme tuloksen tarvitsemme funktion, joka palauttaa annetun luvun neliön. Funktio on seuraavanlainen:

def square(n):
	return n*n

Luettelo kohteista, joille haluamme löytää neliön, on seuraava:

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

Käytetään nyt sisäänrakennettua map()-funktiota laskemaan kunkin my_list-listan alkion neliö.

Lopullinen koodi on seuraava:

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

lähtö:

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

Kuten yllä on nähty, map()-funktion tuloste on näytöllä näkyvä karttaobjekti muodossa .

Sinun täytyy iteroida map()-funktion tulostetta for-silmukalla tai list()-metodilla saadaksesi lopullisen tulosteen. Olen käyttänyt list()-metodia koodissa näyttääkseni annetun listan sisällä olevat arvot.

Joten käyttämällä map()-funktiota voimme laskea jokaisen luvun neliön. Map()-funktiolle annettu lista oli [2,3,4,5,6,7,8,9], ja käyttämällä funktiota square() saamme tulokseksi [4, 9, 16, 25, 36, 49, 64, 81].

map()-funktio soveltaa funktiota square() kaikkiin listan alkioihin. Se esimerkiksi päivittää listan kunkin luvun neliöllä my_list-muuttujan arvosta. Tuloste tallennetaan updated_list-muuttujaan.

Käyttämällä karttaa () kanssa Python sisäänrakennetut toiminnot

Python map()-funktio on sisäänrakennettu toiminto, ja sitä voidaan käyttää myös muiden sisäänrakennettujen toimintojen kanssa PythonTässä esimerkissä aiomme hyödyntää Python round() on sisäänrakennettu funktio, joka pyöristää annetut arvot.

Esimerkiksi:

Listani on my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Tarvitsen pyöristetyt arvot jokaiselle listan alkiolle, joten käytämme round()-funktiota map()-funktion luomiseen.

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

lähtö:

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

round()-funktiota sovelletaan kaikkiin listan alkioihin, ja se palauttaa listan, jossa kaikki arvot on pyöristetty, kuten tulosteessa näkyy.

Map():n käyttäminen merkkijonon kanssa iteraattorina

Voimme myös käyttää merkkijonossa map()-funktiota. sisään Python, merkkijono toimii kuin taulukko, joten voimme helposti käyttää sitä map()-funktion sisällä.

Tässä esimerkissä meillä on funktio myMapFunc(), joka muuntaa annetun merkkijonon isoiksi kirjaimiksi. Funktio myMapFunc() annetaan map()-funktiolle. map()-funktio muuntaa annetun merkkijonon isoiksi kirjaimiksi välittämällä merkkijonon myMapFunc()-funktiolle.

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

lähtö:

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

map()-funktion käyttö listan kanssa Numbers

Työskennelläksemme listan kanssa map()-funktiossa, otamme numerolistan ja kerromme jokaisen listan luvun kymmenellä.

Käyttämämme lista on [2,3,4,5,6,7,8,9]. Funktio myMapFunc() kertoo annetun luvun kymmenellä. Funktio annetaan map()-funktiolle listan kanssa.

Esimerkiksi:

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

lähtö:

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

Näkemämme tuloste on, että jokainen listan numero kerrotaan kymmenellä.

Map():n käyttö Tuplen kanssa

Tuple on esine Python jossa alkiot on erotettu pilkuilla ja suljettu pyöreisiin hakasulkeisiin. Tässä esimerkissä otamme merkkijonoarvoilla varustetun tuplen. Käyttämämme funktio muuntaa annetut arvot isoiksi kirjaimiksi.

Esimerkiksi:

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

lähtö:

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

Saamamme tuloste on tuple takaisin, jonka kaikki arvot on muunnettu isoiksi kirjaimiksi.

Map():n käyttäminen sanakirjan kanssa

A sanakirja sisään Python luodaan aaltosulkeilla ({}). Koska sanakirja on iteraattori, voit käyttää sitä map()-funktion sisällä. Käytetään nyt sanakirjaa iteraattorina map()-funktion sisällä.

Seuraava esimerkki näyttää sanakirjaiteraattorin toiminnan map()-funktion sisällä:

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

lähtö:

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

Map():n käyttö Set:n kanssa

Setti sisään Python on järjestämätön kokoelma aaltosulkeissa ({}) olevia alkioita. Koska set() on myös iteraattori, voit käyttää sitä map()-funktion sisällä.

Tässä on toimiva esimerkki joukon käyttämisestä iteraattorina map()-funktion sisällä:

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

lähtö:

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

Map():n käyttö lambda-funktion kanssa

In Python, lambda-lausekkeita käytetään anonyymien funktioiden rakentamiseen. Sinun on käytettävä lambda-avainsanaa aivan kuten käytät def-funktiota normaalien funktioiden määrittämiseen.

Tässä esimerkissä käytämme map()-funktion sisällä lambda-funktiota. Lambda-funktio kertoo listan jokaisen arvon kymmenellä.

Esimerkiksi:

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

lähtö:

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

Useiden iteraattoreiden käyttö map()-funktion sisällä

Esimerkki 1: Kahden listaiteraattorin välittäminen map()-funktiolle

Voit lähettää map()-funktiolle useamman kuin yhden iteraattorin, eli listan, tuplen jne., kaikki samanaikaisesti.

Jos esimerkiksi haluat lisätä kaksi listaa, voit tehdä saman map()-funktiolla. Käytämme kahta listaa, my_list1 ja my_list2.

Alla olevassa esimerkissä listan my_list1 ensimmäinen kohde lisätään listan my_list2 ensimmäiseen kohteeseen. Funktio myMapFunc() ottaa listan my_list1 ja listan my_list2 kohteet ja palauttaa molempien summan.

Tässä on toimiva esimerkki kahden annetun listan yhteenlaskemisesta map()-funktion avulla.

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

lähtö:

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

Esimerkki 2: Yhden Tuplen ja listaiteraattorin välittäminen map()-funktiolle

Aiomme käyttää map()-funktiossa listaa ja tuple-iteraattoria. map()-funktiolle annettu funktio, myMapFunc(), hakee alkiot listasta ja tuplesta. Alkiot yhdistetään alaviivalla (_). Toimiva esimerkki on esitetty alla:

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

lähtö:

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

UKK

Molemmat suorittavat operaation jokaiseen alkioon. Listan ymmärtäminen on usein helpommin luettavaa ja palauttaa listan suoraan, kun taas map() palauttaa laiskan karttaobjektin ja voi olla nopeampi käytettäessä uudelleen olemassa olevaa nimettyä funktiota.

Ei. map() ei koskaan muuta alkuperäistä iteroitavaa kohdetta. Se lukee jokaisen elementin, soveltaa funktiotasi ja luo uuden laiskan map-objektin jättäen lähdeluettelon, tuplen tai merkkijonon koskemattomaksi.

In Python 3, map() on laiska: se palauttaa karttaobjektin, joka laskee arvoja vain iteroitaessa. Tämä säästää muistia suurissa datamäärissä. Kääri se list()-funktioon tai käytä sitä silmukassa saadaksesi tuloksia.

map() muuntaa jokaisen alkion, filter() säilyttää vain testin läpäisevät alkiot ja reduce() (functoolsista) yhdistää kaikki alkiot yhdeksi arvoksi. Yhdessä ne kattavat muunnos-, valinta- ja koosteoperaatiot.

Kun iteroitavien objekteiden pituus eroaa toisistaan, map() pysähtyy lyhimmän objektin kohdalle. Pidempien iteroitavien objektien ylimääräiset alkiot jätetään huomiotta, joten virhettä ei synny ja tulos vastaa lyhintä iteroitavaa objektia.

Ei. Karttaobjekti on iteraattori, joka tyhjenee yhden läpimenon jälkeen. Kun olet käynyt sen läpi silmukassa tai kutsunut list()-funktiota sille, se on tyhjä. Muunna se ensin listaksi, jos tarvitset sitä uudelleen.

Koneoppimisessa map() soveltaa esikäsittelyfunktioita eri tietojoukkoihin, kuten numeroiden skaalaamista, tekstin tokenisointia tai ominaisuuksien muuntamista ennen koulutusta. Se tarjoaa selkeän ja toimivan tavan suorittaa sama operaatio useiden näytteiden yli.

Kyllä. GitHub Copilot täydentää map()-kutsuja automaattisesti oikealla funktiolla ja iteroitavilla ominaisuuksilla, ja agenttiset tekoälytyökalut voivat refaktoroida silmukat map()-lausekkeiksi ja sitten suorittaa testit varmistaakseen, että toiminta on pysynyt muuttumattomana.

Tiivistä tämä viesti seuraavasti: