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








