Python iterator

Python iterator

Discuteremo di Python Iterator in questo articolo. Iteratore è un oggetto con stato e ricorda dove si trova e quando è iterato. Restituisce l'oggetto singolo. Utilizza i metodi Iter () e Next (). Questo viene utilizzato per formare i loop, le comprensioni e i generatori di Python.

Converti qualsiasi sequenza in iteratore usando la seguente sintassi:

ITER (sequenza)

Per accedere all'elemento successivo, viene utilizzata la funzione successiva (). Qualsiasi oggetto in Python che supporta i due metodi precedenti è chiamato iteratore. Per verificare questo, eseguire il metodo integrato dir () su oggetto.

Esempio: stampa (dir (elenco))

Qui, l'elenco non è un iteratore poiché non ha il metodo "__Next__".

Se proviamo ad accedere ai prossimi elementi, otteniamo l'eccezione come segue:

Per convertirlo come iteratore, passare l'elenco al metodo iter come mostrato nel seguente. Successivamente, vediamo il metodo "__Next__".

Differenza tra iteratore e iterable

ITlable significa che possiamo eseguire il ciclo su valori come elenco, tupla, stringa ecc. Tutti gli oggetti hanno un metodo iter () che viene utilizzato per ottenere un iteratore. Vedremo alcuni esempi per capirlo meglio:

Esempio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
nums = [1,2,3,4,5]
numSiterator = iter (nums) #same come numSiterator = nums.__iter __ ()
# internamente chiamerà __iter__ Dunder Method
Stampa (Next (Numsiterator)) # Access 1st Element
Stampa (Next (Numsiterator)) # Accesso 2 ° elemento
Stampa (Next (Numsiterator)) # Accesso 3 ° elemento e così via ..
Stampa (Next (Numsiterator))
Stampa (Next (Numsiterator))
Stampa (Next (Numsiterator))

Quando raggiungiamo la fine dell'elenco, aumenta un errore di stopiteration.

Nota: Tutto ciò che inizia con il doppio sottocore e termina con il doppio sottocore in Python è chiamato Dunder Method.

Usa il caso degli iteratori

  1. Il loop utilizza iteratori in background.

Esempio 1:

Stampiamo ogni carattere usando il loop.

1
2
3
4
5
S = "Buongiorno"
per char in s:
Stampa (char)

Esempio 2:

Stampiamo la stessa stringa usando gli iteratori.

1
2
3
4
5
6
7
8
9
10
11
S = "Buongiorno"
word = iter (s)
mentre è vero:
Tentativo:
Item = Next (Word)
Stampa (articolo)
Tranne la stopiteration:
rottura
  1. Un altro caso d'uso di iteratore è l'aggiunta dei metodi successivi () e iter () alla nostra classe e renderlo iterabile.

Esempio 3:

Per costruire la nostra funzione di portata, la funzione di intervallo fornisce l'intervallo di valori dall'inizio alla fine (esclusiva).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
MyRange di classe:
def __init __ (self, avvia, fermati):
se stesso.Val = Avvia
se stesso.stop = stop
def __iter __ (self):
Restituisci se stessi
def __next __ (self):
se sé.val> = self.fermare:
Sollevare la taglio
corrente = self.Val
se stesso.Val += 1
Restituisci corrente
nums = miRange (1,5)
Stampa (Next (nums))
Stampa (Next (nums))
Stampa (Next (nums))
Stampa (Next (nums))
Stampa (Next (nums))
  1. Un altro caso d'uso dell'iteratore sono i generatori di Python. I generatori sono metodi normali che producono il valore come output e ricorda lo stato quando viene chiamato la prossima volta. Anche i generatori sono iteratori ma i metodi dunder iter () e next () vengono creati automaticamente.

Scriviamo la funzione di gamma precedente usando il generatore.

Esempio 4:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def my_range (inizio, fine):
corrente = avvio
mentre corrente < end:
Rendi corrente
corrente += 1
nums = my_range (1,5)
Stampa (Next (nums))
Stampa (Next (nums))
Stampa (Next (nums))
Stampa (Next (nums))

Oppure possiamo chiamare quanto segue che produce lo stesso output dell'esempio precedente.

1
2
3
per num in nums:
Stampa (num)

Conclusione

L'iteratore non ha bisogno di finire fintanto che il valore è lì; ci tiene ottenere il valore. Prende un valore alla volta. È davvero utile quando si scrivono programmi efficienti dalla memoria in cui abbiamo alcuni valori che non possiamo mettere in memoria se li mettiamo in un elenco o in una tupla. Possiamo salvare la risorsa con questo.