logo

Enumera() in Python

Spesso, quando si ha a che fare con gli iteratori, è necessario anche tenere il conto delle iterazioni. Python facilita il compito dei programmatori fornendo una funzione integrata enumerate() per questo compito. Il metodo enumerate() aggiunge un contatore a un iterabile e lo restituisce sotto forma di oggetto enumerativo. Questo oggetto enumerato può quindi essere utilizzato direttamente per i cicli o convertito in un elenco di tuple utilizzando la funzione list().

Sintassi: enumerare(iterabile, inizio=0)

parametri:



  • Iterabile: qualsiasi oggetto che supporti l'iterazione
  • Inizio: il valore dell'indice da cui deve partire il contatore, per default è 0

Ritorno: Restituisce un iteratore con coppie di indici ed elementi dell'iterabile originale

Esempio

Qui stiamo utilizzando la funzione enumerate() sia con una lista che con una stringa. Creazione di oggetti enumerati per ciascuno e visualizzazione dei relativi tipi restituiti. Mostra anche come modificare l'indice iniziale per l'enumerazione quando applicato a una stringa, risultando in coppie indice-elemento per l'elenco e la stringa .

Python3




l1>=> [>'eat'>,>'sleep'>,>'repeat'>]> s1>=> 'geek'> # creating enumerate objects> obj1>=> enumerate>(l1)> obj2>=> enumerate>(s1)> print> (>'Return type:'>,>type>(obj1))> print> (>list>(>enumerate>(l1)))> # changing start index to 2 from 0> print> (>list>(>enumerate>(s1,>2>)))>

>

>

Produzione:

Return type: [(0, 'eat'), (1, 'sleep'), (2, 'repeat')] [(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')]>

Utilizzo dell'oggetto enumerato nei cicli

Enumerate() viene utilizzato con una lista chiamata l1. Per prima cosa stampa tuple di coppie di indici ed elementi. Quindi modifica l'indice iniziale stampandoli insieme. Infine, stampa l'indice e l'elemento separatamente, ciascuno sulla propria riga.

Python3




l1>=> [>'eat'>,>'sleep'>,>'repeat'>]> # printing the tuples in object directly> for> ele>in> enumerate>(l1):> >print> (ele)> # changing index and printing separately> for> count, ele>in> enumerate>(l1,>100>):> >print> (count, ele)> # getting desired output from tuple> for> count, ele>in> enumerate>(l1):> >print>(count)> >print>(ele)>

rom
>

>

Produzione:

(0, 'eat') (1, 'sleep') (2, 'repeat') 100 eat 101 sleep 102 repeat 0 eat 1 sleep 2 repeat>

Accesso all'elemento successivo

In Python, la funzione enumerate() funge da iteratore, ereditando tutte le funzioni e i metodi iteratori associati. Pertanto, possiamo utilizzare la funzione next() e il metodo __next__() con an enumerare oggetto.

Per accedere all'elemento successivo in un oggetto enumerato, puoi utilizzare la funzione next(). Prende l'oggetto enumerato come input e restituisce il valore successivo nell'iterazione.

Python3




fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)>

>

>

Produzione:

Next Element: (0, 'apple')>

Puoi chiamare next() nuovamente per recuperare gli elementi successivi:

Python3




fruits>=> [>'apple'>,>'banana'>,>'cherry'>]> enum_fruits>=> enumerate>(fruits)> next_element>=> next>(enum_fruits)> print>(f>'Next Element: {next_element}'>)>

>

>

Produzione:

Next Element: (0, 'apple')>

Ogni volta che viene chiamato next(), il puntatore interno dell'oggetto enumerate si sposta all'elemento successivo, restituendo la tupla corrispondente di indice e valore.