Python iter ()

Python iter () -funktionen returnerer en iterator for det givne objekt.

Den iter()funktion skaber et objekt, som kan gentages ét element ad gangen.

Disse objekter er nyttige, når de kombineres med sløjfer som for loop, mens loop.

Funktionens syntaks iter()er:

 iter (objekt, sentinel)

iter () Parametre

Den iter()funktion tager to parametre:

  • objekt - objekt hvis iterator skal oprettes (kan være sæt, tupler osv.)
  • sentinel (valgfri) - speciel værdi, der bruges til at repræsentere slutningen af ​​en sekvens

Returneringsværdi fra iter ()

  • Den iter()funktion giver en iterator objekt for den givne objekt.
  • Hvis det brugerdefinerede objekt ikke implementerer __iter__(), og __next__()eller __getitem()__, TypeErrorundtagelsen hæves.
  • Hvis sentinel-parameteren også er angivet, iter()returneres en iterator, indtil sentinel-tegnet ikke findes.

Eksempel 1: Arbejde med 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'

Produktion

 aeiou 

Eksempel 2: iter () til brugerdefinerede objekter

 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))

Produktion

 1 2 3 Traceback (seneste opkald sidst): File "", line 23, in File "", line 11, in __next__ StopIteration 

Eksempel 3: iter () med parameter for 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) 

Produktion

 2 4 8

Her har vi implementeret et brugerdefineret iterabelt objekt uden en StopIterationbetingelse.

Vi kan dog bruge iter()metoden med sentinelparameteren til at stoppe iterationen. Hvis værdien, der returneres fra, __next__()er lig med sentinel, StopIterationhæves, ellers returneres værdien.

Anbefalet læsning: Python Iteratorer

Interessante artikler...