Esercitazione Python

Python HOME Introduzione di Python Python per iniziare Sintassi Python Commenti Python Variabili Python Tipi di dati Python Numeri Python Fusione in pitone Stringhe Python Python booleani Operatori Python Elenchi Python Tuple di Python Insiemi Python Dizionari Python Python Se... Altro Python While Loops Python per loop Funzioni Python Python Lambda Matrici Python Classi/oggetti Python Ereditarietà Python Iteratori Python Ambito Python Moduli Python Date Python Python matematica Python JSON Python RegEx PIP Python Python Prova... Tranne Input utente Python Formattazione di stringhe Python

Gestione dei file

Gestione dei file Python File di lettura Python Python Scrivi/Crea file Python Elimina file

Moduli Python

Tutorial NumPy Guida dettagliata di Panda Tutorial Scipy

Python Matplotlib

Introduzione a Matplotlib Matplotlib Inizia Plottaggio Matplotlib Tracciatura Matplotlib Marcatori Matplotlib Linea Matplotlib Etichette Matplotlib Griglia Matplotlib Sottotrame Matplotlib Dispersione Matplotlib Barre Matplotlib Istogrammi Matplotlib Grafici a torta Matplotlib

Apprendimento automatico

Iniziare Modalità mediana media Deviazione standard percentile Distribuzione dei dati Distribuzione normale dei dati Trama a dispersione Regressione lineare Regressione polinomiale Regressione multipla Scala Treno/prova Albero decisionale

Python MySQL

MySQL per iniziare MySQL crea database MySQL Crea tabella Inserimento MySQL MySQL Seleziona MySQL dove MySQL Ordina per Elimina MySQL MySQL Drop Table Aggiornamento MySQL Limite MySQL Unisciti a MySQL

Python MongoDB

MongoDB Inizia MongoDB Crea database MongoDB Crea raccolta Inserisci MongoDB MongoDB Trova Interrogazione MongoDB Ordinamento MongoDB Elimina MongoDB Collezione Drop MongoDB Aggiornamento MongoDB Limite MongoDB

Riferimento Python

Panoramica di Python Funzioni integrate in Python Metodi di stringa Python Metodi dell'elenco Python Metodi del dizionario Python Metodi della tupla Python Metodi di impostazione Python Metodi di file Python Parole chiave Python Eccezioni Python Glossario Python

Riferimento del modulo

Modulo casuale Modulo Richieste Modulo Statistiche Modulo di matematica Modulo cMath

Python come fare per

Rimuovi i duplicati dell'elenco Invertire una stringa Aggiungi due numeri

Esempi Python

Esempi Python Compilatore Python Esercizi di Python Python Quiz Certificato Python

Iteratori Python


Iteratori Python

Un iteratore è un oggetto che contiene un numero numerabile di valori.

Un iteratore è un oggetto su cui è possibile iterare, il che significa che puoi attraversare tutti i valori.

Tecnicamente, in Python, un iteratore è un oggetto che implementa il protocollo iteratore, che consiste nei metodi __iter__() e __next__().


Iteratore vs Iterabile

Elenchi, tuple, dizionari e insiemi sono tutti oggetti iterabili. Sono contenitori iterabili da cui puoi ottenere un iteratore.

Tutti questi oggetti hanno un iter()metodo che viene utilizzato per ottenere un iteratore:

Esempio

Restituisce un iteratore da una tupla e stampa ogni valore:

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))

Anche le stringhe sono oggetti iterabili e possono restituire un iteratore:

Esempio

Le stringhe sono anche oggetti iterabili, contenenti una sequenza di caratteri:

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))

Ciclo attraverso un iteratore

Possiamo anche usare un forciclo per scorrere un oggetto iterabile:

Esempio

Iterare i valori di una tupla:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)

Esempio

Itera i caratteri di una stringa:

mystr = "banana"

for x in mystr:
  print(x)

Il forciclo crea effettivamente un oggetto iteratore ed esegue il metodo next() per ogni ciclo.



Crea un iteratore

Per creare un oggetto/classe come iteratore devi implementare i metodi __iter__()e __next__()il tuo oggetto.

Come hai appreso nel capitolo Classi/Oggetti Python , tutte le classi hanno una funzione chiamata __init__(), che ti consente di eseguire alcune inizializzazioni durante la creazione dell'oggetto.

Il __iter__()metodo agisce in modo simile, puoi eseguire operazioni (inizializzazione ecc.), Ma deve sempre restituire l'oggetto iteratore stesso.

Il __next__()metodo consente anche di eseguire operazioni e deve restituire l'elemento successivo nella sequenza.

Esempio

Crea un iteratore che restituisca numeri, a partire da 1, e ogni sequenza aumenterà di uno (restituendo 1,2,3,4,5 ecc.):

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

Interrompi l'iterazione

L'esempio sopra continuerebbe per sempre se avessi abbastanza istruzioni next() o se fosse usato in un forciclo.

Per evitare che l'iterazione continui per sempre, possiamo usare l' StopIterationistruzione.

Nel __next__()metodo, possiamo aggiungere una condizione di terminazione per generare un errore se l'iterazione viene eseguita un numero specificato di volte:

Esempio

Interrompi dopo 20 iterazioni:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)