Articolo originale: Python Enumerate – Python Enum For Loop Index Example

Quando stai programmando in Python, puoi utilizzare la funzione enumerate() e un ciclo for per visualizzare ciascun valore di un iterabile con una variabile contatore.

In questo articolo, ti mostrerò come usare la funzione enumerate() di Python con un ciclo for e ti spiegherò perché è una funzione migliore rispetto a creare un tuo contatore incrementale.

Prima però diamo un'occhiata a come farlo senza la funzione enumerate().

Come usare un ciclo for senza la funzione enumerate() in Python

In Python, un iterabile è un oggetto su cui è possibile iterare per restituire un valore alla volta. Tra gli esempi di iterabili sono compresi liste, tuple e stringhe.

In questo esempio, abbiamo una lista di nomi di cani ed una variabile chiamata count.

dogs = ['Harley', 'Phantom', 'Lucky', 'Dingo']
count = 1

Possiamo usare un ciclo for per attraversare la lista e stampare ciascun nome. Inoltre, incrementeremo la variabile count di 1 ogni volta per tenere traccia di quante volte abbiamo iterato sulla lista.

for name in dogs:
    print(count, name)
    count += 1

Di seguito il risultato stampato sullo schermo:

Screen-Shot-2021-09-22-at-3.12.05-AM

Anche se questo approccio funziona, presenta un possibile errore.

Un errore comune potrebbe essere quello di dimenticare di incrementare la variabile count.

Se modifico il codice, otteniamo:

dogs = ['Harley', 'Phantom', 'Lucky', 'Dingo']
count = 1
for name in dogs:
    print(count, name)
Screen-Shot-2021-09-22-at-3.15.00-AM

Ora la variabile count non tiene traccia più accuratamente del numero di iterazioni del ciclo sulla lista.

Invece di far incrementare un variabile count, possiamo usare la funzione enumerate() con il ciclo for.

Che cosa è la funzione enumerate() in Python?

La funzione integrata di Python enumerate() prende un iterabile come input e un argomento opzionale di inizio.

enumerate(iterabile, argomento opzionale di inizio)

Se ometti l'argomento opzionale di inizio, il contatore viene impostato a zero.

Il valore restituito dalla funzione enumerate() è un oggetto.

Questa funzione tiene traccia delle iterazioni eseguite così che tu non ti debba ricordare di aggiornare la variabile count .

Possiamo usare la funzione enumerate() con un ciclo for per visualizzare il valore di un iterabile con un contatore.

Come usare un ciclo for con la funzione enumerate() in Python

In questo esempio, vogliamo visualizzare la lista delle indicazioni stradali per andare da Times Square alla Juilliard School of Music a New York.

Come prima cosa dobbiamo creare la lista delle indicazioni, denominata directions:

directions = [
    'Head north on Broadway toward W 48th St',
    'Turn left onto W 58th St',
    'Turn right onto 8th Ave',
    'Turn left onto Broadway',
    'Turn left onto Lincoln Center Plaza',
    'Turn right onto Jaffe Dr',
    'Turn left onto Broadway',
    'Turn left onto W 65th St'
]

Quindi, nel ciclo for, creiamo le variabili count e direction che ci permetteranno di eseguire l'iterazione.

La funzione enumerate() prenderà come argomenti di input la lista  directions e la variabile start. Vogliamo iniziare il conteggio da 1 invece che da 0 (come impostato di default).

for count, direction in enumerate(directions, start=1):

All'interno del ciclo, stamperemo le variabili count e direction.

print(count, direction)

Ecco il codice completo:

directions = [
    'Head north on Broadway toward W 48th St',
    'Turn left onto W 58th St',
    'Turn right onto 8th Ave',
    'Turn left onto Broadway',
    'Turn left onto Lincoln Center Plaza',
    'Turn right onto Jaffe Dr',
    'Turn left onto Broadway',
    'Turn left onto W 65th St'
]

for count, direction in enumerate(directions, start=1):
    print(count, direction)

E il risultato nella console:

Screen-Shot-2021-09-22-at-3.52.27-AM

Come puoi vedere la variabile count  è stata automaticamente aggiornata dalla funzione enumerate().

In questo modo si rimuove la possibilità di errori se dimentichiamo di incrementare la variabile count.

Conclusioni

Puoi utilizzare la funzione enumerate() ed il ciclo for per visualizzare ciascun valore di un iterabile con un contatore.

La funzione enumerate() prende come input un iterabile e un argomento opzionale di inizio.

enumerate(iterabile, argomento opzionale di inizio)

Se l'argomento opzionale di inizio viene omesso, il conteggio viene inizializzato a zero.

L'uso della funzione enumerate() è un'alternativa migliore rispetto a creare un proprio contatore incrementale in un ciclo for.

La funzione enumerate() aggiorna automaticamente il conteggio e pertanto elimina la possibilità che si possa dimenticare di incrementare il contatore.

Spero che questo articolo ti sia piaciuto e buona fortuna per il tuo viaggio nel mondo di Python.