iteratore Python

Come creare un iteratore Python: una guida

Gli iteratori sono assolutamente ovunque in Python; è difficile imparare anche le basi senza sentire la parola "iteratore" o "iterabile".

Un iteratore è un oggetto su cui è possibile eseguire l’iterazione. Sebbene ci siano alcuni oggetti incorporati su cui puoi eseguire l’iterazione, puoi anche definirne di tuoi.

In questa guida, parleremo degli iteratori Python, di come funzionano e di come puoi usarli nel tuo codice. Costruiremo il nostro iteratore in modo che tu possa conoscere le loro funzionalità principali in azione. Il codice in questa guida è compatibile per le installazioni di Python 3.x.

Cominciamo!

Cos’è un iteratore?

Iteratori sono oggetti su cui è possibile eseguire l’iterazione. Un iteratore restituirà i dati da quell’oggetto, un elemento alla volta.

Puoi verificare se un oggetto è iterabile provando a eseguirlo attraverso un ciclo for; se puoi scorrere l’oggetto, significa che è iterabile. Stringhe, elenchi, tuple e dizionari sono esempi dei tipi di dati incorporati che sono oggetti iterabili.

Un oggetto iteratore in Python deve avere due metodi:

  • __iter__(): consente di recuperare un iteratore.
  • __next__(): consente di ottenere il valore successivo in un iteratore.

I trattini bassi __ sono usati negli iteratori perché denotano funzioni speciali. Per definire un iteratore, è necessario utilizzare queste due funzioni speciali. Insieme, sono chiamati il ‚Äã‚Äãprotocollo iteratore. Questi metodi sono generalmente pronunciati come "iter and next method".

L’81% dei partecipanti ha dichiarato di sentirsi più sicuro delle proprie prospettive di lavoro nel settore tecnologico dopo aver frequentato un bootcamp. Fatti abbinare a un bootcamp oggi.

Il laureato medio di un bootcamp ha trascorso meno di sei mesi nella transizione di carriera, dall’avvio di un bootcamp alla ricerca del primo lavoro.

Inizieremo con il nozioni di base: costruire un iteratore infinito. Questo è il tipo più semplice di iteratore. è cosi semplice che continuerà per sempre. Risolveremo questo problema più avanti nel tutorial.

Cominciamo definendo una classe chiamata Cakes, che sarà la nostra classe iteratore:

Abbiamo dichiarato un __init__ che verrà eseguito non appena viene istanziato un oggetto della nostra classe. Il metodo __init__ è chiamato costruttore. In questo esempio, il nostro metodo __init__ può prendi un valore: valore.

Successivamente, creeremo il nostro protocollo iteratore:

Il metodo __iter__ viene utilizzato per recuperare il nostro oggetto iteratore. Il __next__ ci consente di recuperare il valore successivo nell’oggetto iterabile che specifichiamo.

Assicuriamoci che il nostro codice funzioni finora. Lo faremo definendo un oggetto della nostra classe in questo modo:

Finora tutto bene! Potresti pensare a te stesso: perché questo codice non fa nulla? Questo perché la nostra classe restituisce solo una funzione iteratore.

Dobbiamo scorrere il nostro iteratore per verificare se funziona. Possiamo farlo usando un ciclo for-in:

Il nostro codice restituisce:

La maledizione della spugna alla vaniglia! Continua a essere stampato sulla console. Cosa sta succedendo? Abbiamo appena creato il nostro primo iteratore. è molto semplice, ma funziona.

Testare gli iteratori usando i cicli for-in in Python

Prima di rendere utile il nostro iteratore, prendiamoci un momento per rivedere il concetto di un ciclo for-in. Nel nostro ultimo esempio, abbiamo scritto un ciclo for-in per testare il nostro codice:

Il modo in cui funziona un ciclo for-in è che prima crea un iteratore di un oggetto usando un metodo __iter__(). Un ciclo for-in chiama quindi __next__() finché non viene restituito alcun valore.

Puoi pensare a un ciclo for-in come un semplice ciclo while. Mentre ci sono valori che un iteratore può restituire, un ciclo for-in restituirà quei valori.

Creazione di un utile iteratore

Il nostro ultimo iteratore non è molto utile. Stampa solo lo stesso valore più e più volte. Detto questo, è ancora un iteratore: è in grado di leggere tutti gli oggetti in un iterabile.

Creeremo un iteratore che itera su un Array Python. Questo array contiene un elenco di torte.

Per impedire al nostro iteratore di ripetersi all’infinito, terremo traccia di quanti valori ci sono all’interno del nostro iterabile , e quante volte il nostro iteratore è stato eseguito. Questo ci consentirà di interrompere l’esecuzione del nostro iteratore una volta che ha ripetuto tutti gli elementi in un iterabile.

Apri un nuovo file Python e incolla il seguente codice:

Questo iteratore è un po’ più complicato dell’ultimo. Ecco perché abbiamo creato prima un iteratore infinito. In questo iteratore, abbiamo inizializzato tre valori:

"Il Karma di carriera è entrato nella mia vita quando ne avevo più bisogno e mi ha aiutato rapidamente ad abbinarmi a un bootcamp. Due mesi dopo la laurea, ho trovato il lavoro dei miei sogni in linea con i miei valori e obiettivi nella vita!"

Venus, Software Engineer presso Rockbot

Nel nostro __next__() , abbiamo aggiunto un "if" dichiarazione. Questa istruzione controlla se il numero di volte che il nostro iteratore è stato eseguito (count) è inferiore al numero di elementi su cui il nostro iterabile dovrebbe iterare (max).

Se "count" è minore di "max", il nostro iteratore troverà il valore successivo nell’oggetto iterabile. Quindi aggiungerà 1 al nostro "count" variabile in modo da poter tenere traccia di quanti oggetti sono rimasti su cui eseguire l’iterazione. Quindi, restituiamo il valore che abbiamo calcolato.

è importante notare che assegniamo un valore alla variabile "to_return" prima di incrementare la variabile "count". Questo assicura che possiamo accedere al valore sul iterazione corrente del nostro iteratore.

Se abbiamo iterato su ogni elemento del nostro elenco, verrà sollevata un’eccezione chiamata StopIteration. Questo interrompe il nostro programma una volta che abbiamo iterato su ogni elemento nel list.

Vediamo se il nostro iteratore funziona. Aggiungi il seguente codice al tuo programma principale ed eseguilo:

Il nostro codice restituisce:

Aggiungiamo qualche altro elemento a la nostra lista e d guarda cosa succede:

Il nostro codice restituisce:

Ce l’abbiamo fatta! Abbiamo creato con successo un iteratore che scorre il nostro elenco di torte. Ti meriti una torta ‚Äì o anche solo un cupcake ‚Äì per arrivare a questo punto.

Conclusione

Gli iteratori ti permettono di creare oggetti su cui è possibile eseguire l’iterazione. Un iteratore può scorrere un elenco, una stringa o un altro oggetto iterabile ed eseguire un’azione particolare.

Sei pronto per una sfida? Crea un iteratore che scorre un elenco di numeri e restituisce ogni numero moltiplicato per due.

Il codice per questo iteratore sarà simile al nostro esempio precedente ‚Äì utilizzerà ancora il protocollo iteratore ‚Äì ma dovrebbe moltiplicare ogni numero in un elenco per due prima di tornare al programma principale.

Ora sei pronto per iniziare a scrivere i tuoi iteratori in Python come un esperto!