Python iter ()

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 de TypeErroruitzondering 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 StopIterationvoorwaarde.

We kunnen de iter()methode echter met de sentinelparameter gebruiken om de iteratie te stoppen. Als de waarde die wordt geretourneerd van __next__()gelijk is aan sentinel, StopIterationwordt verhoogd, anders wordt de waarde geretourneerd.

Aanbevolen literatuur: Python-iterators

Interessante artikelen...