Python supporta molti oggetti iterabili: liste, tuple e stringhe sono solo alcuni. Il ciclo for di Python è abbastanza flessibile da gestire questi oggetti con facilità. In particolare, ti evita di occuparti dell'indice numerico di ogni voce.

Ma a volte, vorrai lavorare con un indice, per contare o filtrare gli elementi in una raccolta, ad esempio. Scopri come utilizzare la funzione enumerare Python per scorrere una sequenza tenendo traccia sia dell'indice che dell'elemento.

Iterazione senza enumerare()

Considera il seguente elenco Python.

my_fruits = ["mele", "pere", "banane"]

Si supponga di voler tenere traccia del conteggio di ogni elemento nell'elenco. Potresti usa un ciclo for con un gamma() funzionare in questo modo.

contare = 0

per frutta in gamma (len (my_fruits)):
stampa (conteggio, i miei_frutti[conteggio])
contare += 1

Anche se funziona, ha alcune carenze:

  • Devi tenere traccia del conteggio fuori dal ciclo.
  • Devi aumentare il conteggio in ogni iterazione.
  • Devi calcolare la lunghezza del ciclo.
  • intervallo (len()) funziona solo con oggetti numerabili e indicizzabili.
instagram viewer

Esiste una soluzione migliore: la funzione enumerate().

Come funziona enumerate() in Python

Il Pitone enumerare() La funzione prende una raccolta di dati e restituisce un oggetto enumerato. L'oggetto enumerare contiene un contatore come chiave per ogni elemento contenuto nell'oggetto. Il enumerare() la funzione lo fa assegnando un conteggio a ciascun elemento. Questo conteggio corrisponde al numero di iterazioni che la funzione ha completato per raggiungere quel valore.

Questo contatore facilita l'accesso agli articoli della collezione o addirittura la modifica della collezione ove possibile.

Insieme a enumerare(), non è necessario tenere traccia della lunghezza del ciclo o del conteggio delle iterazioni. Puoi anche evitare di accedere in modo esplicito al valore utilizzando l'operatore di indice, ad esempio frutti [contare]. La funzione enumera gestisce automaticamente tutte queste funzioni.

La sintassi di Python enumerate()

Di seguito è riportata la sintassi generale per la funzione enumerate().

enumerare (iterabile, start=0)

enumerate() accetta due argomenti:

  1. iterabile: una raccolta di dati o una sequenza su cui Python può scorrere. Per esempio. una lista o una tupla.
  2. start: l'indice da cui la funzione enumera dovrebbe iniziare il conteggio.

Come viene implementato enumerate()

Per capire come enumerare() funziona, vediamo come viene effettivamente implementato.

defenumerare(sequenza, inizio=0):
n = inizio

per elem in sequenza:
prodotto n, elem
n += 1

Questa funzione, che puoi trovare in Python enumera la documentazione, accetta una sequenza e un argomento di inizio il cui valore predefinito è 0.

La funzione quindi inizializza la variabile n sulla variabile iniziale. Questo tiene traccia del numero di iterazioni.

Nel ciclo for che segue per ogni elemento della sequenza,

  • prodotto sospende l'esecuzione del ciclo.
  • Restituisce anche il conteggio corrente (n) e il valore (elem).
  • Quando il ciclo riprende, incrementa n.

Il valore restituito è un oggetto di coppie chiave-valore.

Se dovessi chiamare il enumerare() funzione e passargli l'elenco dei frutti, questo sarebbe il valore di output.

my_fruits = ["mele", "pere", "banane"]
enumerare_oggetto = enumerare (i miei_frutti)
stampa (lista (enumerate_object))

# output - [(0, 'mele'), (1, 'pere'), (2, 'banane')]

Enumera con un indice iniziale diverso

Nell'esempio sopra, non abbiamo specificato l'indice iniziale. L'esempio seguente mostra come impostare l'indice iniziale su un numero a tua scelta.

Per iniziare da 10, procedi come segue.

enumerare_oggetto = enumerare (i miei_frutti, 10)
stampa (lista (enumerate_object))

# output - [(10, 'mele'), (11, 'pere'), (12, 'banane')]

Python enumera() Esempi

Ecco alcuni esempi che mostrano come è possibile utilizzare enumerare() in Python.

Enumera una stringa Python

In questo esempio, utilizzerai enumerate per recuperare la lettera all'indice 5:

mia_stringa = "makeuseof"

per contare, valore in enumera (my_string):
Se contare == 5:
Stampa (valore)

# uscita - s

Enumera una tupla Python

Puoi anche usare enumerare() iterare su a Tupla Python. In questo esempio, il programma stampa un'intestazione nella prima iterazione, prima di visualizzare gli elementi.

my_fruits_tuple = ("mele", "pere", "banane")

per indice, valore in enumerare (my_fruits_tuple):
Se (indice == 0):
print("Frutta:")

stampa (valore)

/*
Frutta:
mele
pere
banane
*/

Enumera una lista Python

Nell'esempio seguente, stai usando enumera per decrementare di 2 tutti i numeri nell'elenco sopra 10.

mio_numero_elenco = [10, 17, 15, 6]

per indice, valore in enumera (my_number_list):
Se (valore > 10):
mio_numero_elenco[indice] -= 2

stampa (my_number_list)

# uscita - [10, 15, 13, 6]

Usa enumera per contare i tuoi iterabili

Python include enumerare() come funzione incorporata. Puoi usarlo per iterare e contare gli elementi in una raccolta iterabile come elenco, tupla o stringa. Può aiutarti a tenere traccia del vero indice di ciascun elemento, ma puoi anche specificare il tuo indice iniziale. Usalo come alternativa al gamma() se si lavora con oggetti che non sono oggetti numerabili e indicizzabili.