Un itérateur est un objet qui contient un nombre dénombrable de qualités.

Un itérateur est un élément qui peut être itéré après, ce qui implique que vous pouvez naviguer à travers chacune des qualités.

Techniquement, en Python, un itérateur est un objet qui implémente le protocole de l’itérateur, qui se compose des méthodes __iter__() et __next__().

Itérateur contre Itérable

Les documents, les tuples, les références de mots et les ensembles sont pour la plupart des éléments itératifs. Ce sont des supports itératifs dont vous pouvez obtenir un itérateur.

Chacun de ces éléments a une technique d’itération () qui est utilisée pour obtenir un itérateur :

Exemple

Renvoyez un itérateur d’un tuple, et imprimez chaque valeur :

mytuple = (“pomme”, “banane”, “cerise”)
myit = iter(mytuple)

print(next(myit))print(
next(myit))print(next(
myit))

Même les cordes sont des objets itératifs, et peuvent renvoyer un itérateur :

Exemple

Les chaînes de caractères sont également des objets itérables, contenant une séquence de caractères :

mystr = “banane”
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))print(
next(myit))print(next(
myit))print
(next(myit))

Boucle d’un itérateur

Nous pouvons également utiliser une boucle de for pour itérer à travers un objet itérable :

Exemple

Itérer les valeurs d’un tuple :

mytuple = (“pomme”, “banane”, “cerise”)

pour x dans mytuple :
 print(x)

Faire un itérateur

Pour faire d’un article/classe un itérateur, vous devez exécuter les techniques __iter__() et __next__() à votre article.

Comme vous l’avez appris dans la partie Classes/articles Python, toutes les classes ont une capacité appelée __init__(), qui vous permet de faire une introduction lors de la réalisation de l’article.

La technique __iter__() agit de manière comparable, vous pouvez effectuer des tâches (instating et ainsi de suite.), mais devrait constamment restaurer l’objet itérateur lui-même.

La technique __next__() vous permet en outre de faire des activités, et doit restituer la chose suivante dans le groupement.

Exemple

Créez un itérateur qui renvoie des nombres, en commençant par 1, et chaque séquence augmentera d’une unité (en renvoyant 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
 retour x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))print(next(
myiter))print
(next(myiter))


print(next(myiter))
print(next(myiter))

StopIteration

Le modèle ci-dessus serait toujours appliqué si vous aviez assez de proclamations immédiates ou si elles étaient utilisées dans un cercle.

Pour éviter que l’accent ne soit mis sur la perpétuité, nous pouvons utiliser l’explication StopIteration.

Dans la méthode __next__(), nous pouvons ajouter une condition de terminaison pour provoquer une erreur si l’itération est effectuée un nombre de fois spécifié :

Exemple

Arrêtez après 20 itérations :

class MyNumbers :
 def __iter__(self) :
 self.a = 1
 return self

  def __next__(self) :
 if self.a <= 20 :
 x = self.a self.a
 += 1
 retour x
 else :
 raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

pour x dans myiter :
 print(x)