Python tukee monia iteroitavia objekteja: luettelot, monikot ja merkkijonot ovat vain muutamia. Pythonin for-silmukka on riittävän joustava käsittelemään näitä objekteja helposti. Erityisesti se säästää sinua käsittelemästä kunkin merkinnän numeerista indeksiä itse.
Mutta joskus haluat työskennellä indeksin kanssa esimerkiksi laskeaksesi tai suodattaaksesi kokoelman kohteita. Opi käyttämään Python enumerate -toimintoa iteroimaan sekvenssiä samalla kun pidät kirjaa sekä indeksistä että elementistä.
Iterointi ilman enumerate()
Harkitse seuraavaa Python-luetteloa.
my_fruits = ["omenat", "päärynät", "banaanit"]
Oletetaan, että haluat seurata luettelon kunkin elementin määrää. Sinä voisit käytä for-silmukkaa kanssa range() toimi näin.
laske = 0
varten hedelmää sisään alue (len (my_fruits)):
tulosta (count, my_fruits[count])
laske += 1
Vaikka tämä toimii, siinä on muutamia puutteita:
- Sinun on seurattava laskua silmukan ulkopuolella.
- Sinun on lisättävä määrää jokaisessa iteraatiossa.
- Sinun on laskettava silmukan pituus.
- alue (len()) toimii vain laskettavien, indeksoitavien objektien kanssa.
Parempi ratkaisu on olemassa: enumerate()-funktio.
Kuinka enumerate() toimii Pythonissa
Python luetella() funktio ottaa tietokokoelman ja palauttaa enumerate-objektin. Enumerate-objekti sisältää laskurin avaimena jokaiselle objektin sisältämälle kohteelle. The luetella() toiminto tekee sen määrittämällä jokaiselle kohteelle määrän. Tämä määrä vastaa iteraatioiden määrää, jonka funktio on suorittanut saavuttaakseen kyseisen arvon.
Tämä laskuri helpottaa kokoelman esineiden käyttöä tai jopa kokoelman muuntamista mahdollisuuksien mukaan.
Kanssa luetella(), sinun ei tarvitse seurata silmukan pituutta tai iteraatioiden määrää. Voit myös välttää arvon nimenomaisen käytön indeksioperaattorilla, esim hedelmät [määrä]. Luettelotoiminto käsittelee automaattisesti kaikki nämä ominaisuudet.
Pythonin syntaksi enumerate()
Alla on yleinen syntaksi enumerate()-funktiolle.
luetella (iteroitava, aloitus=0)
enumerate() ottaa kaksi argumenttia:
- iteroitava: tietokokoelma tai sarja, jonka Python voi iteroida. Esim. lista tai monikko.
- aloitus: indeksi, josta enumerate-funktion pitäisi alkaa laskea.
Kuinka enumerate() on toteutettu
Ymmärtääksesi kuinka luetella() toimii, katsotaan kuinka se käytännössä toteutetaan.
defluetella(sekvenssi, alku=0):
n = aloitus
varten elem sisään järjestys:
tuotto n, elem
n += 1
Tämä toiminto, jonka löydät osoitteesta Python enumerate -dokumentaatio, ottaa sekvenssin ja aloitusargumentin, jonka oletusarvo on 0.
Funktio alustaa sitten n-muuttujan aloitusmuuttujaksi. Tämä pitää kirjaa iteraatioiden lukumäärästä.
Seuraavassa for-silmukassa jokaiselle sekvenssin elementille,
- tuotto keskeyttää silmukan suorittamisen.
- Se palauttaa myös nykyisen määrän (n) ja arvon (elem).
- Kun silmukka jatkuu, se kasvaa n: llä.
Palautusarvo on avain-arvo-parien objekti.
Jos soittaisit luetella() funktio ja välitä sille hedelmäluettelo, tämä olisi lähtöarvo.
my_fruits = ["omenat", "päärynät", "banaanit"]
enumerate_object = luetella (my_hedelmät)
tulosta (luettelo (enumerate_object))
# tuloste - [(0, 'omenat'), (1, 'päärynä'), (2, 'banaanit')]
Luettelo eri aloitusindeksillä
Yllä olevassa esimerkissä emme määrittäneet aloitusindeksiä. Alla oleva esimerkki näyttää, kuinka voit asettaa aloitusindeksin valitsemallesi numerolle.
Aloita klo 10 seuraavasti.
enumerate_object = luetella (my_fruits, 10)
tulosta (luettelo (enumerate_object))
# tuloste - [(10, 'omenat'), (11, 'päärynät'), (12, 'banaanit')]
Python enumerate() Esimerkkejä
Tässä on joitain esimerkkejä, jotka osoittavat, kuinka voit käyttää luetella() Pythonissa.
Luettelo Python-merkkijono
Tässä esimerkissä käytät enumerate-komentoa hakeaksesi kirjaimen hakemistosta 5:
my_string = "makeuseof"
varten määrä, arvo sisään luetella (oma_merkkijono):
jos laske == 5:
Tulosta (arvo)
# lähtö - s
Luettelo Python Tuple
Voit myös käyttää luetella() iteroida yli a Python monikko. Tässä esimerkissä ohjelma tulostaa otsikon ensimmäisessä iteraatiossa ennen kohteiden näyttämistä.
my_fruits_tuple = ("omenat", "päärynät", "banaanit")
varten indeksi, arvo sisään luetella (my_fruits_tuple):
jos (indeksi == 0):
tulosta ("Hedelmät:")tulostaa (arvo)
/*
Hedelmät:
omenat
päärynät
banaanit
*/
Luettele Python-lista
Alla olevassa esimerkissä käytät enumerate-komentoa vähentääksesi kaikkia 10:n yläpuolella olevan luettelon numeroita kahdella.
my_number_list = [10, 17, 15, 6]
varten indeksi, arvo sisään luetella (my_number_list):
jos (arvo > 10):
oma_numeroluettelo[indeksi] -= 2tulosta (my_number_list)
# tuloste - [10, 15, 13, 6]
Käytä enumerate-komentoa iterablesi laskemiseen
Python sisältää luetella() sisäänrakennettuna toimintona. Voit käyttää sitä iteroimaan ja laskemaan iteroitavan kokoelman kohteita, kuten luetteloa, monikkoa tai merkkijonoa. Sen avulla voit seurata kunkin elementin todellista indeksiä, mutta voit myös määrittää oman aloitusindeksisi. Käytä sitä vaihtoehtona range() -toimintoa, jos käsittelet objekteja, jotka eivät ole laskettavia ja indeksoitavia.