Usa la funzione enumerate in Python per creare loop con contatori

Usa la funzione enumerate in Python per creare loop con contatori

Questo articolo spiegherà l'utilizzo della funzione "enumerate" disponibile nella libreria dei moduli standard di Python. La funzione enumerati consente di assegnare un "indice" o "conta" agli elementi in qualsiasi oggetto iterabile. Puoi quindi implementare ulteriori logiche su di essi in quanto avrai accesso sia ai valori che a un conteggio mappato ad esso.

Sintassi e esempio di base

Se hai utilizzato un ciclo "per" in altri linguaggi di programmazione, in particolare il linguaggio "C" e altri linguaggi con sintassi in stile "C", potresti aver specificato un indice iniziale nel ciclo. Per riferimento, ecco come appare un loop "per" in "C" e in altre lingue con sintassi simile:

per (int i = 0; i < 10; i++)

printf ("%d \ n", i);

L'istruzione Loop inizializza una variabile con un valore zero, verifica che sia inferiore a una soglia e la aumenta di un conteggio dopo aver valutato la logica all'interno del blocco Loop (se la condizione di arresto è soddisfatta). In questo modo è possibile utilizzare un indice e assegnarlo a tutti gli oggetti a cui si fa riferimento nel blocco ad anello. In confronto, ecco come appare un ciclo per lo stesso risultato in Python:

per i nell'intervallo (0, 10):
Stampa (i)

La funzione "intervallo" in Python consente di specificare una sequenza di gamma numerica che ha una fase predefinita di 1. È possibile modificare il valore del passaggio fornendo un terzo argomento. Il secondo argomento nella funzione "intervallo" viene utilizzato per impostare la soglia per la condizione di arresto. Entrambi i campioni di codice producono il seguente output:

0
1
2
3
4
5
6
7
8
9

Questi loop funzionano bene se vuoi solo generare una sequenza numerica e associarli a qualche logica all'interno dell'istruzione Loop. Tuttavia, potrebbe essere necessario utilizzare un altro ciclo nidificato o utilizzare la funzione "resa" su qualsiasi tipo iterabile per assegnare loro una sorta di conteggio tracciabile. Il metodo "enumerate" semplifica l'assegnazione di indici a iterables in un'istruzione, eliminando così la necessità di eseguire più loop nidificati. Dai un'occhiata a questo campione di codice:

numeri = ["zero", "one", "due", "tre", "quattro", "cinque"]
enumerated_numbers = enumerate (numeri)
Per indice, elemento in enumerated_numbers:
Stampa (indice, articolo)

La prima istruzione definisce una nuova variabile chiamata "numeri" e assegna un iteble (tipo di elenco). La seconda affermazione mostra l'utilizzo della funzione "enumerati" in cui si fornisce un iterabile come argomento obbligatorio. La terza istruzione converte la variabile "enumerated_numbers" in un oggetto tipo elenco. Per impostazione predefinita, la funzione "enumerate" genera un tipo di tipo "enumera" e non un tipo iterabile, quindi devi convertirlo. Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output:

[(0, 'zero'), (1, 'one'), (2, 'due'), (3, 'tre'), (4, 'quattro'), (5, 'cinque')]

La funzione "enumerate" assegna un conteggio a ciascun elemento in un tipo iterabile e crea tuple con valori accoppiati. Per impostazione predefinita, il conteggio inizia da zero.

Ora che hai assegnato un numero a ciascun elemento in un tipo iterabile, puoi facilmente lanciarlo su di esso senza scrivere dichiarazioni nidificate:

numeri = ["zero", "one", "due", "tre", "quattro", "cinque"]
enumerated_numbers = enumerate (numeri)
Per indice, elemento in enumerated_numbers:
Stampa (indice, articolo)

Il campione di codice sopra specificato produrrà il seguente output:

0 zero
1 uno
2 Due
3 tre
4 quattro
5 cinque

È possibile rendere il codice più breve usando la funzione "enumerate" in linea, come mostrato nel campione seguente:

numeri = ["zero", "one", "due", "tre", "quattro", "cinque"]
Per indice, elemento in enumerate (numeri):
Stampa (indice, articolo)

Usando Enumerate con un indice iniziale diverso

La funzione "enumerate" prende un argomento opzionale in cui è possibile specificare un indice iniziale. Per impostazione predefinita è zero, ma puoi cambiarlo usando l'argomento "start":

numeri = ["one", "due", "tre", "quattro", "cinque"]
Per indice, elemento in enumerate (numeri, start = 1):
Stampa (indice, articolo)

Nella seconda affermazione, l'argomento "start = 1" viene utilizzato per cambiare il punto di partenza. Dopo aver eseguito il campione di codice sopra specificato, è necessario ottenere il seguente output:

1 uno
2 Due
3 tre
4 quattro
5 cinque

Assegnazione dell'indice con i passaggi

Nella prima sezione di questo articolo, viene mostrata la sintassi per il ciclo "per" nel linguaggio "c" in cui è possibile definire i passaggi tra ciascun conteggio o indice successivo. La funzione "enumerate" in Python non ha alcun argomento di questo tipo, quindi non è possibile specificare un passaggio tra i conteggi. Puoi davvero scrivere la tua logica per implementare i passaggi all'interno del blocco ad anello "per" elencato. Tuttavia, esiste un modo per implementare i passaggi personalizzati scrivendo un codice minimo. L'esempio seguente mostra l'implementazione dei passaggi utilizzando le funzioni "Zip" e "Range":

numeri = ["zero", "due", "quattro", "sei"]
per indice, elemento in zip (intervallo (0, 7, 2), numeri):
Stampa (indice, articolo)

La funzione "zip" consente di creare coppie raccogliendo elementi con lo stesso indice da due o più iterables. Quindi la funzione "zip" qui raccoglie un elemento dalla funzione iteerabile restituita dalla funzione "0, 7, 2)" e un altro elemento dall'elenco "numeri" e quindi li abbina entrambi in una tupla. Il risultato finale è un'implementazione identica alla funzione "enumerate" ma con passaggi personalizzati specificati come terzo argomento nella funzione "intervallo (0, 7, 2)" (2 in questo caso). Dopo aver eseguito il campione di codice sopra specificato, è necessario ottenere il seguente output:

0 zero
2 Due
4 quattro
6 Six

Conclusione

La funzione "enumerate" in Python consente di scrivere un codice conciso assegnando una sequenza numerica agli elementi in un oggetto iterabile. Questo è davvero utile se si desidera tenere traccia dell'indice degli elementi all'interno di un tipo iterabile. Se si desidera "enumerare" i tipi iterabili con passaggi personalizzati, utilizzare la funzione "Zip" spiegata nell'ultimo esempio.