Come utilizzare Enumerate in Python (looping con indici)

Scopri come utilizzare la funzione enumerate() in Python. Ottieni sia l'indice che il valore quando esegui il loop sugli elenchi con esempi puliti.

Prova questa soluzione nell'editor

Panoramica

Quando si esegue un'iterazione su una lista, una tupla o una stringa, spesso sarà necessario tenere traccia dell'indice corrente di ciascun elemento accanto all'elemento stesso. Un modello comune per principianti utilizza una variabile contatore separata che viene incrementata manualmente o utilizza `range(len(my_list))` per scorrere gli indici. Tuttavia, Python fornisce una soluzione molto più elegante, pitonica e integrata: la funzione `enumerate()`.

La funzione "enumerate()" accetta qualsiasi elemento iterabile come argomento e restituisce un oggetto enumerato, che produce coppie di tuple con valore indice. Utilizzando lo spacchettamento della tupla in un ciclo "for", puoi estrarre l'indice e l'elemento contemporaneamente. Ciò elimina completamente la necessità di variabili contatore manuali e parentesi di indicizzazione, rendendo il codice notevolmente più pulito e meno incline a errori off-by-one.

Per impostazione predefinita, `enumerate()` inizia a contare gli indici da `0`. Tuttavia, puoi passare un indice iniziale personalizzato utilizzando l'argomento facoltativo della parola chiave "start" (ad esempio, "enumerate(items, start=1)"). Ciò è incredibilmente utile quando si mostrano i numeri degli elenchi agli utenti umani, poiché le persone in genere si aspettano che gli elenchi inizino a contare da 1 anziché da 0.

Codice e output di esecuzione

Questo script dimostra l'iterazione sugli elenchi utilizzando enumerate per ottenere coppie indice-elemento, a partire da 0 e 1.

use_enumerate.py
Prova nell'editor
fruits = ["apple", "banana", "cherry"]

# 1. Standard enumeration (starts at 0)
print("--- Standard Enumeration ---")
for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")

# 2. Enumeration starting at a custom index (e.g., 1)
print("\n--- Starting at 1 ---")
for num, fruit in enumerate(fruits, start=1):
    print(f"Item #{num}: {fruit}")
Uscita terminale
--- Standard Enumeration ---
Index 0: apple
Index 1: banana
Index 2: cherry

--- Starting at 1 ---
Item #1: apple
Item #2: banana
Item #3: cherry

Implementazione passo dopo passo

  • Passa la tua lista (o qualsiasi iterabile) alla funzione enumerate() incorporata.
  • Decomprimere le tuple restituite in un ciclo for utilizzando la sintassi per indice, valore in enumerate(list).
  • Fornire il parametro di avvio (ad esempio, start=1) per modificare il valore del contatore dell'indice iniziale.

Domande frequenti

enumerate() modifica l'elenco originale?

No, enumerate() restituisce un oggetto iteratore pigro e lascia l'elenco originale completamente invariato.

Posso usare enumerate() con un dizionario?

Sì, ma l'iterazione diretta su un dizionario produrrà le sue chiavi. Per ripetere il valore-chiave dell'indice, utilizzare: for i, (k, v) in enumerate(my_dict.items()):.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.