Python iter ()

Die Funktion Python iter () gibt einen Iterator für das angegebene Objekt zurück.

Die iter()Funktion erstellt ein Objekt, das Element für Element iteriert werden kann.

Diese Objekte sind nützlich, wenn sie mit Schleifen wie for loop, while loop gekoppelt sind.

Die Syntax der iter()Funktion lautet:

 iter (Objekt, Sentinel)

iter () Parameter

Die iter()Funktion akzeptiert zwei Parameter:

  • Objekt - Objekt, dessen Iterator erstellt werden muss (kann Mengen, Tupel usw. sein)
  • Sentinel (optional) - Spezialwert, der das Ende einer Sequenz darstellt

Rückgabewert von iter ()

  • Die iter()Funktion gibt ein Iteratorobjekt für das angegebene Objekt zurück.
  • Wenn das benutzerdefinierte Objekt nicht implementiert __iter__()wird und __next__()oder __getitem()__, wird die TypeErrorAusnahme ausgelöst.
  • Wenn der Sentinel-Parameter ebenfalls angegeben wird, wird iter()ein Iterator zurückgegeben, bis das Sentinel-Zeichen nicht gefunden wird.

Beispiel 1: Arbeiten mit 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'

Ausgabe

 aeiou 

Beispiel 2: iter () für benutzerdefinierte Objekte

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

Ausgabe

 1 2 3 Traceback (letzter Aufruf zuletzt): Datei "", Zeile 23, in Datei "", Zeile 11, in __next__ StopIteration 

Beispiel 3: iter () mit 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) 

Ausgabe

 2 4 8

Hier haben wir ein benutzerdefiniertes iterierbares Objekt ohne StopIterationBedingung implementiert .

Wir können jedoch die iter()Methode mit dem sentinelParameter verwenden, um die Iteration zu stoppen. Wenn der von zurückgegebene Wert __next__()gleich ist sentinel, StopIterationwird erhöht, andernfalls wird der Wert zurückgegeben.

Empfohlene Lektüre: Python-Iteratoren

Interessante Beiträge...