Funcția Python iter () returnează un iterator pentru obiectul dat.
iter()
Funcția creează un obiect care poate fi iterată un element la un moment dat.
Aceste obiecte sunt utile atunci când sunt cuplate cu bucle, cum ar fi pentru buclă, în timp ce buclă.
Sintaxa iter()
funcției este:
iter (obiect, santinelă)
iter () Parametri
iter()
Funcția are doi parametri:
- obiect - obiect al cărui iterator trebuie creat (pot fi seturi, tupluri etc.)
- santinelă (opțional) - valoare specială care este utilizată pentru a reprezenta sfârșitul unei secvențe
Returnează valoarea din iter ()
iter()
Functia returneaza un obiect iterator pentru obiectul dat.- Dacă obiectul definit de utilizator nu implementează
__iter__()
și__next__()
sau__getitem()__
,TypeError
excepția este ridicată. - Dacă este furnizat și parametrul santinelă,
iter()
returnează un iterator până când caracterul santinelă nu este găsit.
Exemplul 1: Lucrul 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'
Ieșire
aeiou
Exemplul 2: iter () pentru obiecte personalizate
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))
Ieșire
1 2 3 Traceback (ultimul apel cel mai recent): Fișierul "", linia 23, în Fișierul "", linia 11, în __următorul__ StopIteration
Exemplul 3: iter () cu parametru santinelă
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)
Ieșire
2 4 8
Aici, am implementat un obiect iterabil personalizat fără o StopIteration
condiție.
Cu toate acestea, putem folosi iter()
metoda cu sentinel
parametrul pentru a opri iterația. Dacă valoarea returnată __next__()
este egală cu sentinel
, StopIteration
va fi mărită, în caz contrar, valoarea va fi returnată.
Lectură recomandată: Iteratori Python