Utilitzeu la funció Enumerar a Python per crear bucles amb comptadors

Use Enumerate Function Python Create Loops With Counters



En aquest article s’explicarà l’ús de la funció d’enumeració disponible a la biblioteca de mòduls estàndard de Python. La funció Enumerar us permet assignar un índex o recompte a elements de qualsevol objecte iterable. A continuació, podeu implementar una lògica addicional, ja que tindreu accés a tots dos valors i a un recompte assignat.

Sintaxi i exemple bàsic

Si heu utilitzat un bucle for en altres llenguatges de programació, especialment el llenguatge C i altres llenguatges amb sintaxi d'estil C, és possible que hàgiu especificat un índex inicial al bucle. Com a referència, aquí teniu l’aspecte d’un bucle for en C i en altres idiomes amb sintaxi similar:







per (intjo= 0;jo< 10;jo++)

{

printf ('% d n',jo);

}

L'instrucció de bucle inicialitza una variable que té un valor zero, comprova que sigui inferior a un llindar i l'incrementa en un recompte després d'avaluar la lògica dins del bloc de bucle (si es compleix la condició d'aturada). D'aquesta manera, podeu utilitzar un índex i assignar-lo a qualsevol objecte al qual faci referència el bloc de bucle. En comparació, això és el que sembla un bucle for amb el mateix resultat a Python:



perjodins abast(0, 10):

imprimir (jo)

La funció d'abast a Python us permet especificar una seqüència d'abast de números que té un pas per defecte d'1. Podeu canviar el valor del pas proporcionant un tercer argument. El segon argument de la funció d’interval s’utilitza per establir el llindar de la condició d’aturada. Tots dos exemples de codi produeixen la sortida següent:



0

1

2

3

4

5

6

7

8

9

Aquests bucles funcionen bé si només voleu generar una seqüència de números i associar-los amb alguna lògica dins de la sentència de bucle. Tanmateix, és possible que hàgiu d'utilitzar un altre bucle imbricat o utilitzar la funció de rendiment en qualsevol tipus iterable per assignar-los algun tipus de recompte rastrejable. El mètode enumerar facilita l'assignació d'índexs a iterables en una sentència, eliminant així la necessitat d'executar diversos bucles imbricats. Mireu aquest exemple de codi:





números= ['zero', 'un', 'dos', 'tres', 'quatre', 'cinc']

números_enumerats= enumerat(números)

períndex,articledinsnombres_enumerats:

imprimir (índex,article)

La primera sentència defineix una nova variable anomenada números i li assigna un iterable (tipus de llista). La segona sentència mostra l'ús de la funció enumerada on se li subministra un iterable com a argument obligatori. La tercera sentència converteix la variable enumerated_numbers en un objecte de tipus llista. Per defecte, la funció enumeració genera un objecte de tipus enumerat i no un tipus iterable, de manera que heu de convertir-lo. Després d'executar la mostra de codi esmentada anteriorment, hauríeu d'obtenir la següent sortida:

[(0, 'zero'), (1, 'un'), (2, 'dos'), (3, 'tres'), (4, 'quatre'), (5, 'cinc')]

La funció d’enumeració assigna un recompte a cada element d’un tipus iterable i crea tuples que tenen valors aparellats. Per defecte, el recompte comença des de zero.



Ara que heu assignat un número a cada element en un tipus iterable, podeu fer un recorregut fàcilment sense escriure sentències imbricades:

números= ['zero', 'un', 'dos', 'tres', 'quatre', 'cinc']

números_enumerats= enumerat(números)

períndex,articledinsnombres_enumerats:

imprimir (índex,article)

La mostra de codi especificada anteriorment produirà la sortida següent:

0 zero

1 un

2 dos

3 tres

4 quatre

5 cinc

Podeu fer el codi més curt mitjançant l’enumeració de la funció en línia, tal com es mostra a la mostra següent:

números= ['zero', 'un', 'dos', 'tres', 'quatre', 'cinc']

períndex,articledins enumerat(números):

imprimir (índex,article)

Utilitzant Enumerar amb un índex inicial diferent

La funció enumerar adopta un argument opcional on podeu especificar un índex inicial. Per defecte és zero, però podeu canviar-lo mitjançant l'argument d'inici:

números= ['un', 'dos', 'tres', 'quatre', 'cinc']

períndex,articledins enumerat(números,començar=1):

imprimir (índex,article)

A la segona afirmació, s'utilitza l'argument start = 1 per canviar el punt de partida. Després d'executar la mostra de codi especificada anteriorment, hauríeu d'obtenir la següent sortida:

1 un

2 dos

3 tres

4 quatre

5 cinc

Assignació de l'índex amb passos

A la primera secció d'aquest article, es mostra la sintaxi del bucle for en llenguatge C on podeu definir els passos entre cada recompte o índex posterior. La funció d’enumeració de Python no disposa d’aquest argument, de manera que no podeu especificar un pas entre recompte. De fet, podeu escriure la vostra pròpia lògica per implementar passos dins del bloc de bucle enumerat. Tot i això, hi ha una manera d’implementar passos personalitzats escrivint un mínim de codi. L'exemple següent mostra la implementació de passos mitjançant funcions zip i range:

números= ['zero', 'dos', 'quatre', 'sis']

períndex,articledins cremallera(abast(0, 7, 2),números):

imprimir (índex,article)

La funció zip us permet crear parells recollint elements que tinguin el mateix índex de dos o més iterables. Per tant, la funció zip aquí recull un element de la funció iterable retornada de l'interval (0, 7, 2) i un altre element de la llista de números i, a continuació, els emparella ambdós en una tupla. El resultat final és una implementació idèntica a la funció d’enumeració, però amb passos personalitzats especificats com a tercer argument de la funció d’interval (0, 7, 2) (2 en aquest cas). Després d'executar la mostra de codi especificada anteriorment, hauríeu d'obtenir la següent sortida:

0 zero

2 dos

4 quatre

6 sis

Conclusió

La funció d’enumeració de Python us permet escriure codi concís assignant una seqüència numèrica a elements d’un objecte iterable. Això és realment útil si voleu fer un seguiment de l'índex d'elements dins d'un tipus iterable. Si voleu enumerar tipus iterables amb passos personalitzats, utilitzeu la funció zip que s’explica a l’últim exemple.