Python Iterator
- Previous Page Python Inheritance
- Next Page Python Bereik
Python Iterator
Een iterator is een object dat het aantal meetbare waarden bevat.
Een iterator is een iterable object, wat betekent dat je door alle waarden kunt lopen.
Technisch gezien is een iterator in Python een object dat de iterator protocol implementeert, het bevat methoden __iter__()
en __next__()
.
Iterator VS Iterable object
Lijsten, tuples, dictionaries en sets zijn iterable objecten. Ze zijn iterable containers waaruit je een iterator (Iterator) kunt verkrijgen.
Alle deze objecten hebben een methode om een iterator te verkrijgen iter()
Methode:
Instance
Van een tuple een iterator retourneren en elke waarde afdrukken:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
Zelfs strings zijn iterable objecten en kunnen een iterator retourneren:
Instance
Stringen zijn ook iterable objecten die een reeks tekens bevatten:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
Loopen door iterator
We kunnen ook de for-lus gebruiken om door een iterable object te loopen:
Instance
Itereer over de waarden van de tuple:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
Instance
Itereer over de tekens in de string:
mystr = "banana" for x in mystr: print(x)
Tip:De for-lus maakt eigenlijk een iteratorobject aan en voert voor elke loopuitvoering next()
methode.
iterator aanmaken
Om een object/klasse te maken als een iterator, moet je een iterator implementeren voor het object __iter__()
en __next__()
methode.
Zoals je hebt geleerd in het hoofdstuk over Python klassen/objecten, hebben alle klassen een methode genaamd __init__()
De functie die het mogelijk maakt om enkele initialisaties uit te voeren bij het aanmaken van een object.
__iter__()
Method serves a similar purpose, you can perform operations (initialization, etc.), but you must always return the iterator object itself.
__next__()
Method also allows you to perform operations and must return the next item in the sequence.
Instance
Create an iterator that returns numbers, starting from 1, each sequence will increase by 1 (return 1, 2, 3, 4, 5, etc.):
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
StopIteration
If you have enough next()
statement, or in a for loop, then the above example will continue indefinitely.
To prevent iteration from continuing indefinitely, we can use StopIteration
statement.
in __next__()
In a method, if the iteration completes the specified number of times, we can add a termination condition to raise an error:
Instance
Stop after 20 iterations:
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): if self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)
- Previous Page Python Inheritance
- Next Page Python Bereik