Python iter () -funktionen returnerar en iterator för det angivna objektet.
Den iter()
funktion skapar ett objekt som kan itereras ett element åt gången.
Dessa objekt är användbara när de kombineras med slingor som för loop, medan loop.
iter()
Funktionens syntax är:
iter (objekt, vaktpost)
iter () Parametrar
Den iter()
funktionen tar två parametrar:
- objekt - objekt vars iterator måste skapas (kan vara uppsättningar, tuplar etc.)
- sentinel (valfritt) - specialvärde som används för att representera slutet på en sekvens
Returvärde från iter ()
- Den
iter()
Funktionen returnerar en iterator objekt för det givna objektet. - Om det användardefinierade objektet inte implementeras
__iter__()
och,__next__()
eller__getitem()__
,TypeError
undantaget höjs. - Om Sentinel-parametern också tillhandahålls,
iter()
returnerar en iterator tills sentinel-tecknet inte hittas.
Exempel 1: Arbeta 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
Exempel 2: iter () för anpassade objekt
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 Spårning (senaste samtalet senast): Fil "", rad 23, i fil "", rad 11, i __nästa__ StopIteration
Exempel 3: iter () med parametern 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
Här har vi implementerat ett anpassat iterabelt objekt utan StopIteration
villkor.
Vi kan dock använda iter()
metoden med sentinel
parametern för att stoppa iterationen. Om värdet som returneras från __next__()
är lika med sentinel
, StopIteration
höjs, annars returneras värdet.
Rekommenderad läsning: Python Iterators