Python podpira številne iterable predmete: seznami, torki in nizi so le nekateri. Pythonova zanka for je dovolj prilagodljiva, da z lahkoto obravnava te predmete. Zlasti vas prihrani, da se sami ne ukvarjate s številčnim indeksom vsakega vnosa.
Včasih pa boste želeli delati z indeksom, na primer za štetje ali filtriranje elementov v zbirki. Naučite se, kako lahko uporabite funkcijo enumerate Python za ponavljanje zaporedja, hkrati pa spremljate tako indeks kot element.
Ponavljanje brez enumerate()
Razmislite o naslednjem seznamu Python.
my_fruits = ["jabolka", "hruške", "banane"]
Recimo, da želite spremljati število vsakega elementa na seznamu. Lahko bi uporabite zanko for z obseg() deluje tako.
štej = 0
za sadje v obseg (len (my_fruits)):
natisni (štej, moje_sadje[štej])
štej += 1
Čeprav to deluje, ima nekaj pomanjkljivosti:
- Spremljati morate štetje izven zanke.
- V vsaki ponovitvi morate povečati število.
- Izračunati morate dolžino zanke.
- obseg (len()) deluje samo s predmeti, ki jih je mogoče prešteti in jih je mogoče indeksirati.
Obstaja boljša rešitev: funkcija enumerate().
Kako enumerate() deluje v Pythonu
Python naštej () funkcija vzame zbirko podatkov in vrne predmet enumerate. Objekt enumerate vsebuje števec kot ključ za vsak element, ki ga vsebuje objekt. The naštej () funkcija to naredi tako, da vsakemu elementu dodeli štetje. To število ustreza številu ponovitev, ki jih je funkcija opravila, da bi dosegla to vrednost.
Ta števec olajša dostop do elementov v zbirki ali celo mutira zbirko, kjer je to mogoče.
Z naštej (), vam ni treba slediti dolžini zanke ali štetju ponovitev. Prav tako se lahko izognete eksplicitnemu dostopu do vrednosti z uporabo indeksnega operaterja, npr sadje[štej]. Funkcija enumerate samodejno obravnava vse te funkcije.
Sintaksa za Python enumerate()
Spodaj je splošna sintaksa za funkcijo enumerate().
enumerate (iterable, start=0)
enumerate() ima dva argumenta:
- iterable: zbirka podatkov ali zaporedje, po katerem lahko Python ponovi. npr. seznam ali kortek.
- start: indeks, iz katerega naj bi funkcija enumerate začela šteti.
Kako se izvaja enumerate().
Da bi razumeli, kako naštej () deluje, poglejmo, kako se dejansko izvaja.
defnaštevati(zaporedje, začetek=0):
n = začetek
za elem v zaporedje:
donos n, elem
n += 1
Ta funkcija, ki jo najdete v Dokumentacija o naštevanju Pythona, vzame zaporedje in začetni argument, ki je privzeto nastavljen na 0.
Funkcija nato inicializira spremenljivko n v začetno spremenljivko. To spremlja število ponovitev.
V zanki for, ki sledi za vsak element v zaporedju,
- donos začasno ustavi izvajanje zanke.
- Vrne tudi trenutno število (n) in vrednost (elem).
- Ko se zanka nadaljuje, poveča n.
Vrnjena vrednost je objekt parov ključ/vrednost.
Če bi poklicali naštej () funkcijo in ji posredujte seznam plodov, to bi bila izhodna vrednost.
my_fruits = ["jabolka", "hruške", "banane"]
enumerate_object = enumerate (my_fruits)
natisni (seznam (enumerate_object))
# izhod - [(0, 'jabolka'), (1, 'hruške'), (2, 'banane')]
Naštej z drugačnim začetnim indeksom
V zgornjem primeru nismo navedli začetnega indeksa. Spodnji primer vam pokaže, kako lahko nastavite začetni indeks na številko po vaši izbiri.
Za začetek ob 10. naredite naslednje.
enumerate_object = enumerate (moje_sadje, 10)
natisni (seznam (enumerate_object))
# izhod - [(10, 'jabolka'), (11, 'hruške'), (12, 'banane')]
Primeri Python enumerate().
Tukaj je nekaj primerov, ki prikazujejo, kako lahko uporabite naštej () v Pythonu.
Naštej niz Python
V tem primeru boste uporabili enumerate za pridobivanje črke v indeksu 5:
my_string = "makeuseof"
za štetje, vrednost v naštej (moj_niz):
če štej == 5:
natisniti (vrednost)
# izhod - s
Naštej Pythonov tuple
Lahko tudi uporabite naštej () ponoviti čez a Pythonov kortek. V tem primeru program natisne glavo v prvi ponovitvi, preden prikaže elemente.
my_fruits_tuple = ("jabolka", "hruške", "banane")
za indeks, vrednost v naštej (my_fruits_tuple):
če (indeks == 0):
print("Sadje:")natisni (vrednost)
/*
sadje:
jabolka
hruške
banane
*/
Naštej seznam Python
V spodnjem primeru uporabljate enumerate za zmanjšanje vseh številk na seznamu nad 10 za 2.
my_number_list = [10, 17, 15, 6]
za indeks, vrednost v enumerate (my_number_list):
če (vrednost > 10):
moj_seznam_številk[indeks] -= 2natisni (my_number_list)
# izhod - [10, 15, 13, 6]
Uporabite enumerate za štetje vaših iterables
Python vključuje naštej () kot vgrajena funkcija. Uporabite ga lahko za ponavljanje in štetje elementov v iterable zbirki, kot so seznam, kork ali niz. Pomaga vam lahko slediti resničnemu indeksu vsakega elementa, lahko pa tudi določite svoj začetni indeks. Uporabite ga kot alternativo za obseg (), če delate s predmeti, ki niso števni in indeksirani.