Python iter ()

La funzione iter () di Python restituisce un iteratore per l'oggetto dato.

La iter()funzione crea un oggetto che può essere iterato un elemento alla volta.

Questi oggetti sono utili se accoppiati a cicli come il ciclo for, ciclo while.

La sintassi della iter()funzione è:

 iter (oggetto, sentinella)

Parametri iter ()

La iter()funzione accetta due parametri:

  • oggetto - oggetto il cui iteratore deve essere creato (possono essere insiemi, tuple, ecc.)
  • sentinel (opzionale) : valore speciale utilizzato per rappresentare la fine di una sequenza

Valore restituito da iter ()

  • La iter()funzione restituisce un oggetto iteratore per l'oggetto specificato.
  • Se l'oggetto definito dall'utente non implementa __iter__()e __next__()o __getitem()__, TypeErrorviene sollevata l' eccezione.
  • Se viene fornito anche il parametro sentinel, iter()restituisce un iteratore finché il carattere sentinel non viene trovato.

Esempio 1: funzionamento di Python iter ()

 # list of vowels vowels = ('a', 'e', 'i', 'o', 'u') vowels_iter = iter(vowels) print(next(vowels_iter)) # 'a' print(next(vowels_iter)) # 'e' print(next(vowels_iter)) # 'i' print(next(vowels_iter)) # 'o' print(next(vowels_iter)) # 'u'

Produzione

 aeiou 

Esempio 2: iter () per oggetti personalizzati

 class PrintNumber: def __init__(self, max): self.max = max def __iter__(self): self.num = 0 return self def __next__(self): if(self.num>= self.max): raise StopIteration self.num += 1 return self.num print_num = PrintNumber(3) print_num_iter = iter(print_num) print(next(print_num_iter)) # 1 print(next(print_num_iter)) # 2 print(next(print_num_iter)) # 3 # raises StopIteration print(next(print_num_iter))

Produzione

 1 2 3 Traceback (ultima chiamata più recente): File "", riga 23, in File "", riga 11, in __next__ StopIteration 

Esempio 3: iter () con parametro sentinel

 class DoubleIt: def __init__(self): self.start = 1 def __iter__(self): return self def __next__(self): self.start *= 2 return self.start __call__ = __next__ my_iter = iter(DoubleIt(), 16) for x in my_iter: print(x) 

Produzione

 2 4 8

Qui abbiamo implementato un oggetto iterabile personalizzato senza una StopIterationcondizione.

Tuttavia, possiamo utilizzare il iter()metodo con il sentinelparametro per interrompere l'iterazione. Se il valore restituito da __next__()è uguale a sentinel, StopIterationverrà aumentato, altrimenti verrà restituito il valore.

Letture consigliate: iteratori Python

Articoli interessanti...