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 dieTypeError
Ausnahme 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 StopIteration
Bedingung implementiert .
Wir können jedoch die iter()
Methode mit dem sentinel
Parameter verwenden, um die Iteration zu stoppen. Wenn der von zurückgegebene Wert __next__()
gleich ist sentinel
, StopIteration
wird erhöht, andernfalls wird der Wert zurückgegeben.
Empfohlene Lektüre: Python-Iteratoren