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()__
,TypeError
undtagelsen 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 StopIteration
betingelse.
Vi kan dog bruge iter()
metoden med sentinel
parameteren til at stoppe iterationen. Hvis værdien, der returneres fra, __next__()
er lig med sentinel
, StopIteration
hæves, ellers returneres værdien.
Anbefalet læsning: Python Iteratorer