Usa la funzione Enumerate in Python per creare loop con contatori

Use Enumerate Function Python Create Loops With Counters



Questo articolo spiegherà l'uso della funzione enumera disponibile nella libreria di moduli standard di Python. La funzione Enumera consente di assegnare un indice o un conteggio agli elementi in qualsiasi oggetto iterabile. È quindi possibile implementare ulteriore logica su di essi poiché si avrà accesso a entrambi i valori e a un conteggio ad esso mappato.

Sintassi ed esempio di base

Se hai utilizzato un ciclo for 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 ciclo for in C e altri linguaggi con sintassi simile:







per (intio= 0;io< 10;io++)

{

printf ('%D ',io);

}

L'istruzione loop inizializza una variabile avente valore zero, verifica che sia inferiore a una soglia e la incrementa di un conteggio dopo aver valutato la logica all'interno del blocco loop (se la condizione di stop è soddisfatta). In questo modo puoi usare un indice e assegnarlo a qualsiasi oggetto a cui si fa riferimento nel tuo blocco di loop. In confronto, ecco come appare un ciclo for con lo stesso risultato in Python:



perioin gamma(0, 10):

Stampa (io)

La funzione range in Python ti consente di specificare una sequenza di intervalli di numeri che ha un passo predefinito di 1. Puoi cambiare il valore del passo fornendo un terzo argomento. Il secondo argomento nella funzione range viene utilizzato per impostare la soglia per la condizione di arresto. Entrambi gli esempi di codice producono il seguente output:



0

1

2

3

4

5

6

7

8

9

Questi cicli funzionano bene se vuoi solo generare una sequenza numerica e associarli a una logica all'interno dell'istruzione del ciclo. Tuttavia, potrebbe essere necessario utilizzare un altro ciclo annidato o utilizzare la funzione yield su qualsiasi tipo iterabile per assegnare loro una sorta di conteggio tracciabile. Il metodo enumerate semplifica l'assegnazione di indici agli iterabili in un'unica istruzione, eliminando così la necessità di eseguire più cicli annidati. Dai un'occhiata a questo esempio di codice:





numeri= ['zero', 'uno', 'Due', 'tre', 'quattro', 'cinque']

numeri_enumerati= elencato(numeri)

perindice,articoloinnumeri_enumerati:

Stampa (indice,articolo)

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

[(0, 'zero'), (1, 'uno'), (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 parte da zero.



Ora che hai assegnato un numero a ciascun elemento in un tipo iterabile, puoi facilmente ripeterlo senza scrivere istruzioni annidate:

numeri= ['zero', 'uno', 'Due', 'tre', 'quattro', 'cinque']

numeri_enumerati= elencato(numeri)

perindice,articoloinnumeri_enumerati:

Stampa (indice,articolo)

L'esempio di codice specificato sopra produrrà il seguente output:

0 zero

1 uno

2 due

3 tre

4 quattro

5 cinque

Puoi rendere il codice più breve utilizzando la funzione enumera in linea, come mostrato nell'esempio seguente:

numeri= ['zero', 'uno', 'Due', 'tre', 'quattro', 'cinque']

perindice,articoloin elencato(numeri):

Stampa (indice,articolo)

Utilizzo di Enumera con un indice di partenza diverso

La funzione enumera prende un argomento facoltativo in cui è possibile specificare un indice iniziale. Di default è zero, ma puoi cambiarlo usando l'argomento start:

numeri= ['uno', 'Due', 'tre', 'quattro', 'cinque']

perindice,articoloin elencato(numeri,cominciare=1):

Stampa (indice,articolo)

Nella seconda istruzione, viene utilizzato l'argomento start=1 per modificare il punto di partenza. Dopo aver eseguito l'esempio di codice specificato sopra, dovresti 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 for in linguaggio C in cui è possibile definire i passaggi tra ogni conteggio o indice successivo. La funzione enumera in Python non ha alcun argomento disponibile, quindi non puoi specificare un passaggio tra i conteggi. Puoi infatti scrivere la tua logica per implementare i passaggi all'interno del blocco del ciclo for enumerato. Tuttavia, esiste un modo per implementare 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']

perindice,articoloin cerniera lampo(gamma(0, 7, 2),numeri):

Stampa (indice,articolo)

La funzione zip permette di creare coppie prelevando elementi aventi lo stesso indice da due o più iterabili. Quindi la funzione zip qui preleva un elemento dall'iterabile restituito dalla funzione range(0, 7, 2) e un altro elemento dall'elenco dei numeri e quindi li accoppia entrambi in una tupla. Il risultato finale è un'implementazione identica alla funzione enumera ma con passaggi personalizzati specificati come terzo argomento nella funzione range(0, 7, 2) (2 in questo caso). Dopo aver eseguito l'esempio di codice specificato sopra, dovresti ottenere il seguente output:

0 zero

2 due

4 quattro

6 sei

Conclusione

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