Python toetab paljusid itereeritavaid objekte: loendid, kordused ja stringid on vaid mõned. Pythoni silmus on piisavalt paindlik, et neid objekte hõlpsalt käsitseda. Eelkõige säästab see teid iga kirje numbriindeksiga ise tegelemast.
Kuid mõnikord soovite töötada indeksiga, näiteks kogus olevaid üksusi loendada või filtreerida. Siit saate teada, kuidas saate Pythoni loendusfunktsiooni kasutada jada itereerimiseks, jälgides samal ajal nii indeksit kui ka elementi.
Itereerimine ilma enumerate()
Mõelge järgmisele Pythoni loendile.
my_fruits = ["õunad", "pirnid", "banaanid"]
Oletame, et soovite jälgida loendi iga elemendi arvu. Sa võiksid kasutage for-silmust koos vahemik () toimida niimoodi.
arv = 0
jaoks puuvilju sisse vahemik (len (my_fruits)):
print (count, my_fruits[count])
loe += 1
Kuigi see töötab, on sellel mõned puudused:
- Peate jälgima loendust väljaspool tsüklit.
- Igas iteratsioonis peate loendust suurendama.
- Peate arvutama silmuse pikkuse.
- vahemik (len()) töötab ainult loendatavate indekseeritavate objektidega.
Parem lahendus on olemas: funktsioon enumerate().
Kuidas enumerate() Pythonis töötab
Python loetlema () funktsioon kogub andmeid ja tagastab loendusobjekti. Loendamisobjekt sisaldab loendurit võtmena iga objektis sisalduva üksuse jaoks. The loetlema () funktsioon teeb seda, määrates igale elemendile arvu. See arv vastab iteratsioonide arvule, mille funktsioon on selle väärtuse saavutamiseks teinud.
See loendur hõlbustab juurdepääsu kogus olevatele üksustele või võimaluse korral kogust muteeruda.
Koos loetlema (), ei pea te jälgima tsükli pikkust ega iteratsioonide arvu. Samuti saate vältida selgesõnalist juurdepääsu väärtusele indeksioperaatori abil, näiteks puuviljad[loend]. Loendamisfunktsioon käsitleb kõiki neid funktsioone automaatselt.
Pythoni süntaks enumerate()
Allpool on funktsiooni enumerate() üldine süntaks.
loetlema (itereeritav, algus=0)
enumerate() võtab kaks argumenti:
- itereeritav: andmekogu või jada, mida Python saab itereerida. Nt. loend või korteež.
- start: indeks, millest loendusfunktsioon peaks loendama hakkama.
Kuidas enumerate() on rakendatud
Et mõista, kuidas loetlema () toimib, vaatame, kuidas seda tegelikult rakendatakse.
defloetlema(jada, algus=0):
n = algus
jaoks elem sisse järjestus:
saagikus n, elem
n += 1
See funktsioon, mille leiate jaotisest Pythoni loendi dokumentatsioon, võtab jada ja algusargumendi, mille vaikeväärtus on 0.
Seejärel lähtestab funktsioon n muutuja algusmuutujaks. See jälgib iteratsioonide arvu.
For-tsüklis, mis järgneb jada iga elemendi jaoks,
- saagikus peatab tsükli täitmise.
- Samuti tagastab see praeguse arvu (n) ja väärtuse (elem).
- Kui tsükkel jätkub, suureneb see n.
Tagastusväärtus on võtme-väärtuste paaride objekt.
Kui peaksite helistama loetlema () funktsiooni ja edastage sellele puuviljade loend, oleks see väljundväärtus.
my_fruits = ["õunad", "pirnid", "banaanid"]
loetlema_objekt = loetlema (minu_puuviljad)
print (loend (loenda_objekt))
# väljund - [(0, 'õunad'), (1, 'pirnid'), (2, 'banaanid')]
Loendage erineva algindeksiga
Ülaltoodud näites me algusindeksit ei täpsustanud. Allolev näide näitab, kuidas saate määrata algusindeksiks enda valitud numbri.
Kell 10 alustamiseks tehke järgmist.
enumerate_object = loetlema (minu_puuviljad, 10)
print (loend (loenda_objekt))
# väljund - [(10, 'õunad'), (11, 'pirnid'), (12, 'banaanid')]
Python enumerate() Näited
Siin on mõned näited, mis näitavad, kuidas saate seda kasutada loetlema () Pythonis.
Loetlege Pythoni string
Selles näites kasutate loendis 5. tähe leidmiseks:
my_string = "makeuseof"
jaoks arv, väärtus sisse loetlema (minu_string):
kui loe == 5:
printida (väärtus)
# väljund - s
Loetlege Pythoni korteež
Võite ka kasutada loetlema () kordama üle a Pythoni korteež. Selles näites prindib programm päise esimeses iteratsioonis, enne üksuste kuvamist.
my_fruits_tuple = ("õunad", "pirnid", "banaanid")
jaoks indeks, väärtus sisse loetlema (my_fruits_tuple):
kui (indeks == 0):
print("Puuviljad:")print (väärtus)
/*
Puuviljad:
õunad
pirnid
banaanid
*/
Loetlege Pythoni loend
Allolevas näites kasutate loendamist, et vähendada loendis kõiki üle 10 olevaid numbreid 2 võrra.
minu_numbrite_loend = [10, 17, 15, 6]
jaoks indeks, väärtus sisse loetlema (my_number_list):
kui (väärtus > 10):
minu_numbrite_loend[indeks] -= 2print (minu_numbrite_loend)
# väljund – [10, 15, 13, 6]
Kasutage oma itereeritavate loendite loendamiseks nuppu enumerate
Python sisaldab loetlema () sisseehitatud funktsioonina. Saate seda kasutada itereeritavas kogus olevate üksuste itereerimiseks ja loendamiseks (nt loend, korteež või string). See aitab teil jälgida iga elemendi tegelikku indeksit, kuid saate määrata ka oma algindeksi. Kasutage seda alternatiivina vahemik() funktsiooni, kui töötate objektidega, mis ei ole loendatavad ja indekseeritavad objektid.