Usando la funzione enumerate() di Python, potete ottenere il numero di indice (conteggio, ordine) e gli elementi di un oggetto iterabile come una lista o una tupla in un ciclo for.
Questo articolo spiega le basi della funzione enumerate().
- Funzione per ottenere l'indice in un ciclo for:
enumerate()
- Normale ciclo for
- Per il ciclo usando la funzione enumerate()
- Iniziare l'indice della funzione enumerate() a 1 (un valore non nullo)
- Specificare l'incremento (passo)
La funzione enumerate() può essere usata per ottenere l'indice in un ciclo for.
Normale ciclo for
l = ['Alice', 'Bob', 'Charlie']
for name in l:
print(name)
# Alice
# Bob
# Charlie
Per il ciclo usando la funzione enumerate()
Specificare un oggetto iterabile come una lista come argomento della funzione enumerate().
Potete ottenere il numero di indice e l'elemento in questo ordine.
for i, name in enumerate(l):
print(i, name)
# 0 Alice
# 1 Bob
# 2 Charlie
Iniziare l'indice della funzione enumerate() a 1 (un valore non nullo)
Come mostrato nell'esempio qui sopra, per default, l'indice della funzione enumerate() parte da 0.
Se volete iniziare con un numero diverso da 0, specificate un numero iniziale arbitrario come secondo argomento della funzione enumerate().
Per iniziare da zero, fate come segue.
for i, name in enumerate(l, 1):
print(i, name)
# 1 Alice
# 2 Bob
# 3 Charlie
Naturalmente, si può iniziare con altri numeri.
for i, name in enumerate(l, 42):
print(i, name)
# 42 Alice
# 43 Bob
# 44 Charlie
Utile quando si vuole creare una stringa numerata in modo sequenziale; è più intelligente specificare il numero iniziale come secondo argomento della funzione enumerate() che usare 'i+1' per iniziare da 1.
for i, name in enumerate(l, 1):
print('{:03}_{}'.format(i, name))
# 001_Alice
# 002_Bob
# 003_Charlie
Vedi il seguente articolo per maggiori informazioni sulla funzione format, che è usata per riempire i numeri con degli zeri.
- Articoli correlati:Emettere zeri riempiti, numeri esadecimali, ecc. con la funzione format() di Python
Specificare l'incremento (passo)
Non c'è un argomento per specificare il passo incrementale nella funzione enumerate(), ma si può ottenere facendo come segue
step = 3
for i, name in enumerate(l):
print(i * step, name)
# 0 Alice
# 3 Bob
# 6 Charlie