De functie Python iter () retourneert een iterator voor het opgegeven object.
De iter()
functie maakt een object aan dat element voor element kan worden herhaald.
Deze objecten zijn handig wanneer ze worden gekoppeld aan lussen zoals for loop, while loop.
De syntaxis van de iter()
functie is:
iter (object, sentinel)
iter () Parameters
De iter()
functie heeft twee parameters:
- object - object waarvan de iterator moet worden gemaakt (kan sets, tuples, etc. zijn)
- sentinel (optioneel) - speciale waarde die wordt gebruikt om het einde van een reeks aan te geven
Retourwaarde van iter ()
- De
iter()
functie retourneert een iteratorobject voor het opgegeven object. - Als het door de gebruiker gedefinieerde object
__iter__()
, en__next__()
of niet implementeert ,__getitem()__
wordt deTypeError
uitzondering gegenereerd. - Als de sentinel-parameter ook is opgegeven,
iter()
wordt een iterator geretourneerd totdat het sentinel-teken niet is gevonden.
Voorbeeld 1: werking van 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'
Uitvoer
aeiou
Voorbeeld 2: iter () voor aangepaste objecten
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))
Uitvoer
1 2 3 Traceback (meest recente oproep laatste): Bestand "", regel 23, in Bestand "", regel 11, in __next__ StopIteration
Voorbeeld 3: iter () met sentinel-parameter
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)
Uitvoer
2 4 8
Hier hebben we een aangepast itereerbaar object geïmplementeerd zonder een StopIteration
voorwaarde.
We kunnen de iter()
methode echter met de sentinel
parameter gebruiken om de iteratie te stoppen. Als de waarde die wordt geretourneerd van __next__()
gelijk is aan sentinel
, StopIteration
wordt verhoogd, anders wordt de waarde geretourneerd.
Aanbevolen literatuur: Python-iterators