Python acceptă multe obiecte iterabile: liste, tupluri și șiruri de caractere sunt doar câteva. Bucla Python pentru este suficient de flexibilă pentru a gestiona aceste obiecte cu ușurință. În special, vă scutește de a vă ocupa singur de indexul numeric al fiecărei intrări.
Dar uneori, veți dori să lucrați cu un index, să numărați sau să filtrați elemente dintr-o colecție, de exemplu. Aflați cum puteți utiliza funcția de enumerare Python pentru a repeta o secvență în timp ce urmăriți atât indexul, cât și elementul.
Iterarea fără enumerate()
Luați în considerare următoarea listă Python.
my_fruits = ["mere", "pere", "banane"]
Să presupunem că doriți să urmăriți numărul fiecărui element din listă. Ai putea utilizați o buclă for cu gamă() functioneaza asa.
numără = 0
pentru fructe în interval (len (fructele_mei)):
imprimare (numărați, fructele_mei[numărați])
numără += 1
Deși funcționează, are câteva deficiențe:
- Trebuie să urmăriți numărul în afara buclei.
- Trebuie să creșteți numărul în fiecare iterație.
- Trebuie să calculați lungimea buclei.
- interval (len()) funcționează numai cu obiecte numărabile, indexabile.
Există o soluție mai bună: funcția enumerate().
Cum funcționează enumerate() în Python
Pitonul enumera() funcția preia o colecție de date și returnează un obiect enumerare. Obiectul enumerare conține un contor ca o cheie pentru fiecare articol pe care îl conține. The enumera() funcția face acest lucru atribuind fiecărui element un număr. Acest număr corespunde numărului de iterații pe care funcția le-a finalizat pentru a atinge acea valoare.
Acest contor face mai ușor accesul la articolele din colecție sau chiar mutarea colecției acolo unde este posibil.
Cu enumera(), nu trebuie să urmăriți lungimea buclei sau numărul de iterații. De asemenea, puteți evita accesarea explicită a valorii folosind operatorul index, cum ar fi fructe[numărare]. Funcția de enumerare gestionează automat toate aceste caracteristici.
Sintaxa lui Python enumerate()
Mai jos este sintaxa generală pentru funcția enumerate().
enumera (iterabil, start=0)
enumerate() are două argumente:
- iterabil: o colecție de date sau o secvență pe care Python o poate itera. De exemplu. o listă sau un tuplu.
- start: indexul de la care funcția de enumerare ar trebui să înceapă să conteze.
Cum este implementat enumerate().
Pentru a înțelege cum enumera() funcționează, să vedem cum este implementat de fapt.
defenumera(secvență, început=0):
n = început
pentru elem în secvenţă:
Randament n, elem
n += 1
Această funcție, pe care o puteți găsi în Python enumera documentația, ia o secvență și un argument de pornire care este implicit 0.
Funcția inițializează apoi variabila n la variabila de pornire. Aceasta ține evidența numărului de iterații.
În bucla for care urmează pentru fiecare element din secvență,
- Randament întrerupe execuția buclei.
- De asemenea, returnează numărul curent (n) și valoarea (elem).
- Când bucla se reia, aceasta crește n.
Valoarea returnată este un obiect al perechilor cheie-valoare.
Dacă ar fi să suni la enumera() funcția și transmiteți-i lista de fructe, aceasta ar fi valoarea de ieșire.
my_fruits = ["mere", "pere", "banane"]
enumerate_object = enumera (fructele_mei)
imprimare (listă (obiect_enumerare))
# ieșire - [(0, 'mere'), (1, 'pere'), (2, 'banane')]
Enumerați cu un index de început diferit
În exemplul de mai sus, nu am specificat indexul de pornire. Exemplul de mai jos vă arată cum puteți seta indexul de pornire la un număr la alegere.
Pentru a începe de la 10, procedați în felul următor.
enumerate_object = enumerate (fructele_mei, 10)
imprimare (listă (obiect_enumerare))
# ieșire - [(10, 'mere'), (11, 'pere'), (12, 'banane')]
Python enumerate() Exemple
Iată câteva exemple care arată cum puteți utiliza enumera() în Python.
Enumerați un șir Python
În acest exemplu, veți folosi enumerate pentru a prelua scrisoarea de la indexul 5:
my_string = "fabricatul"
pentru număr, valoare în enumerate (my_string):
dacă numără == 5:
imprimare (valoare)
# ieșire - s
Enumerați un tuplu Python
De asemenea, puteți utiliza enumera() a repeta peste a tuplu Python. În acest exemplu, programul tipărește un antet în prima iterație, înainte de a afișa elementele.
my_fruits_tuple = ("mere", "pere", "banane")
pentru indice, valoare în enumera (fructele_mei_tuplu):
dacă (index == 0):
print("Fructe:")imprimare (valoare)
/*
Fructe:
merele
pere
banane
*/
Enumera o listă Python
În exemplul de mai jos, utilizați enumerare pentru a reduce toate numerele din lista de peste 10 cu 2.
lista_numere_mee = [10, 17, 15, 6]
pentru indice, valoare în enumerați (lista_mei_numerelor):
dacă (valoare > 10):
lista_numerelor_mei[index] -= 2tipăriți (lista_mei_de_numere)
# ieșire - [10, 15, 13, 6]
Utilizați enumerate pentru a vă număra iterabilele
Python include enumera() ca o funcție încorporată. Îl puteți folosi pentru a repeta și a număra elemente dintr-o colecție iterabilă, cum ar fi listă, tuplu sau șir. Vă poate ajuta să urmăriți indexul adevărat al fiecărui element, dar vă puteți specifica și propriul index de pornire. Utilizați-l ca alternativă la gamă() dacă lucrați cu obiecte care nu sunt obiecte numărabile și indexabile.