Python Iterators: Wat is Iterator in Python en hoe gebruik je het?



In deze blog over Python-iterators zullen we een diepgaande studie doen naar Iterators in Python en hoe deze worden geïmplementeerd.

De programmeertaal van Python heeft elk aspect van innovatie geschaald, inclusief , , , enz. Een van de vele redenen voor deze prestatie zijn concepten als Python Iterators, concepten zoals deze zijn de bouwstenen van Pythons triomf als programmeertaal. In dit artikel zullen we de volgende concepten doornemen om Python Iterators te begrijpen:

Iterators vs Iterable

Een object in Python, dat kan worden gebruikt als een herhaalbaar object, wordt Iterable genoemd. Dit betekent in feite dat de volgorde in het object kan worden herhaald. De meeste Python-collecties houden van een lijst , , tupel , sets , en zelfs bereik kan worden behandeld als een iterabele.





Wat zijn Python-iteratoren?

Een Python I terator is een container met een telbaar aantal waarden. Waarden in een container kunnen worden doorlopen met behulp van Iterators - met name lijsten.

Naast traversal geeft Iterators ook toegang tot data-elementen in een container, maar presteert het zelf nietiteratied.w.z. niet zonder enige aanzienlijke vrijheid genomen met dat concept of met triviaal gebruik van de terminologie. Een Iterator lijkt bijna op eendatabase cursorin gedrag. Hier is een eenvoudig voorbeeld van de Iterator in .



my_obj = {'Edureka', 'Python', 'iterator'} iter_obj = iter (my_obj) print (volgende (iter_obj))

Uitgang: Edureka

Iterator is elk type Python dat kan worden gebruikt met een ‘for in loop’.Elk object dat als Iterator moet worden gebruikt, moet de volgende methoden implementeren.

iteratoren in python - edureka



1. __iter __ ()

Het wordt aangeroepen bij de initialisatie van een Iterator.Het zou een object moeten retourneren dat een volgende of __next__ methode heeft.

2. __volgende __ ()

De volgende methode van de Iterator retourneert de volgende waarde voor de iterabele.

Wanneer een Iterator wordt gebruikt met een ‘for in’ -lus, wordt next () impliciet aangeroepen door op het Iterator-object. Deze methode moet een StopIteration gebruiken om het einde van de iteratie aan te geven.Samen worden deze twee methoden het Iterator-protocol genoemd. Laten we met een voorbeeld proberen te begrijpen hoe een for-lus werkt als een Iterator in Python.

voor i in object: print (i)

Laten we eens kijken hoe for loop werkt als een Iterator.

# maak een iterator-object van die itereerbare iter_obj = iter (iterabele) # oneindige lus terwijl True: probeer: # haal het volgende itemelement = next (iter_obj) # doe iets met element behalve StopIteration: # als StopIteration wordt verhoogd, breek de lus breken

Nu we weten, hoe de for loop werkt als een Iterator. Laten we begrijpen hoe we aangepaste Iterators in Python kunnen implementeren.

Aangepaste iterators

Laten we nu eens kijken hoe we aangepaste Iterators in Python kunnen implementeren. Om dit te begrijpen, zullen we een voorbeeld gebruiken. In dit voorbeeld zullen we de __iter __ () en __next __ () methoden implementeren.

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

Uitgang: een

2

3

Nu we weten hoe we aangepaste Iterators kunnen implementeren, laten we eens kijken naar oneindige Iterators in Python.

Oneindige iteratoren

Het is niet altijd verplicht dat het item in een Iterator-object moet worden uitgeput. Er kunnen oneindige iteratoren zijn (die nooit eindigen). Hier is een eenvoudig voorbeeld om oneindige iteratoren te demonstreren.

De ingebouwde iter ()kan worden aangeroepen met twee argumenten waarbij het eerste argument een object (functie) moet zijn dat kan worden aangeroepen en het tweede de schildwacht is. De Iterator roept deze functie aan totdat de geretourneerde waarde gelijk wordt aan de sentinel.

Laten we een voorbeeld nemen om dit te begrijpen

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 (volgende (myiter)) print (volgende (myiter)) print (volgende (myiter)) print (volgende (myiter))

Uitgang: een
2
3
4
5

In het bovenstaande voorbeeld gaat de uitvoering door zolang we de printinstructie blijven toevoegen. Om de oneindige iteratoren te stoppen, moeten we de instructie stopIteration gebruiken.

het sorteren van een array in c ++ programma

StopIteratie

Om te voorkomen dat een iteratie voor altijd doorgaat, gebruiken we de instructie StopIteration. Laten we dit begrijpen met een paar voorbeelden.

class MyNumbers: def __iter __ (self): self.a = 1 return self def __next __ (self): if self.a & ampampamplt = 5: x = self.a self.a + = 1 return x else: raise StopIteration myclass = MyNumbers () myiter = iter (myclass) voor x in myiter: print (x)

Uitgang: een
2
3
4
5

Nu zodra de voorwaarde is false, de uitvoering gaat naar het else-blok en de iteratie stopt. Laten we nu eens kijken naar een paar andere voorbeelden van Iterators in Python.

Python Iterator-voorbeelden

Hier zijn nog een paar voorbeelden van Iterators in Python.

my_obj = ['Edureka', 'python', 'iterator'] iter_obj = iter (my_obj) print (volgende (iter_obj))

Uitgang: Edureka

In dit voorbeeld gebruiken we de tuple als het itereerbare object.

my_obj = ('Edureka', 'python', 'iterator') iter_obj = iter (my_obj) print (volgende (iter_obj))

Uitgang: Edureka

We kunnen de string zelfs gebruiken als een itereerbaar object in python.

my_obj = 'Edureka' iter_obj = iter (my_obj) print (volgende (iter_obj))

Uitgang: IS

Dit brengt ons bij het einde van dit artikel waar we hebben geleerd hoe we de Python Iterators gebruiken met voorbeelden. Ik hoop dat je duidelijk bent met alles wat in deze tutorial met je is gedeeld.

Als je dit artikel over 'Python Iterators' relevant vond, bekijk dan eens een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld.

We zijn hier om je te helpen bij elke stap op je reis en om een ​​curriculum te bedenken dat is ontworpen voor studenten en professionals die een . De cursus is ontworpen om u een voorsprong te geven in het programmeren van Python en om u te trainen in zowel kern- als geavanceerde Python-concepten, samen met verschillende Leuk vinden

Als je vragen tegenkomt, stel dan gerust al je vragen in het commentaargedeelte van 'Python Iterators'. Ons team beantwoordt graag.