Python Tutorial

Itérateurs Python


Itérateurs Python

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

Un itérateur est un objet sur lequel on peut itérer, ce qui signifie que vous pouvez parcourir toutes les valeurs.

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


Itérateur vs Itérable

Les listes, tuples, dictionnaires et ensembles sont tous des objets itérables. Ils sont itérables
conteneurs à partir duquel vous pouvez obtenir un itérateur.

Tous ces objets ont une iter() méthode utilisée pour obtenir un itérateur :

Exemple

Renvoie un itérateur à partir d’un tuple et imprime chaque valeur :

mytuple = (“pomme”, “banane”, “cerise”)
monit = iter(montuple)

imprimer(suivant(myit))
imprimer(suivant(myit))
imprimer(suivant(myit))

Essayez-le vous-même »

Même les chaînes sont des objets itérables et peuvent renvoyer un itérateur :

Exemple

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

mystr = “banane”
myit = iter(mystr)

imprimer(suivant(myit))
imprimer(suivant(myit))
imprimer(suivant(myit))
imprimer(suivant(myit))
imprimer(suivant(myit))
imprimer(suivant(myit))

Essayez-le vous-même »


Boucler dans un itérateur

Nous pouvons également utiliser un for boucle pour parcourir un objet itérable :

Exemple

Itérer les valeurs d’un tuple :

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

pour x dans montuple :
impression(x)

Essayez-le vous-même »

Exemple

Itérer les caractères d’une chaîne :

mystr = “banane”

pour x dans mystr :
impression(x)

Essayez-le vous-même »

Le for loop crée en fait un objet itérateur et exécute la méthode next() pour chaque boucle.



Créer un itérateur

Pour créer un objet/une classe en tant qu’itérateur, vous devez implémenter les méthodes
__iter__() et
__next__()
à votre objet.

Comme vous l’avez appris dans le chapitre Classes/Objets Python, toutes les classes ont une fonction appelée
__init__()ce qui vous permet d’effectuer une initialisation lors de la création de l’objet.

Le __iter__() La méthode agit de la même manière, vous pouvez effectuer des opérations (initialisation, etc.), mais vous devez toujours renvoyer l’objet itérateur lui-même.

Le __next__() La méthode vous permet également d’effectuer des opérations et doit renvoyer l’élément suivant dans la séquence.

Exemple

Créez un itérateur qui renvoie des nombres, en commençant par 1, et chaque séquence augmentera de un (renvoyant 1,2,3,4,5 etc.) :

classe MesNuméros :
def __iter__(soi):
soi.a = 1
revenir soi-même

def __suivant__(soi):

x = soi.a
soi.a += 1
retour x

maclasse = MesNombres()
moniter = iter(maclasse)

print(suivant(myiter))
print(suivant(myiter))
print(suivant(myiter))
print(suivant(myiter))
print(suivant(myiter))

Essayez-le vous-même »


ArrêterItération

L’exemple ci-dessus continuerait indéfiniment si vous aviez suffisamment d’instructions next(), ou s’il était utilisé dans un
for boucle.

Pour éviter que l’itération ne se poursuive indéfiniment, nous pouvons utiliser le
StopIteration déclaration.

Dans le __next__() nous pouvons ajouter une condition de fin pour générer une erreur si l’itération est effectuée un nombre de fois spécifié :

Exemple

Arrêt après 20 itérations :

classe MesNuméros :
def __iter__(soi):
soi.a = 1
revenir soi-même

def __suivant__(soi):

si self.a <= 20 :
x = soi.a

soi.a += 1
retour x

autre:
augmenter StopIteration

maclasse = MesNombres()
moniter = iter(maclasse)

pour x en myiter :

impression(x)

Essayez-le vous-même »


#Itérateurs #Python

Related Articles

Check Also
Close
Back to top button