Tutoriel Python

Python ACCUEIL Introduction à Python Python pour commencer Syntaxe Python Commentaires Python Variables Python Types de données Python Nombres Python Casting Python Chaînes Python Booléens Python Opérateurs Python Listes Python Tuples Python Ensembles Python Dictionnaires Python Python Si... Sinon Boucles tant que Python Python pour les boucles Fonctions Python Python Lambda Tableaux Python Classes/Objets Python Héritage Python Itérateurs Python Portée Python Modules Python Dates Python Mathématiques Python PythonJSON Python RegEx PIP Python Python Essayer... Sauf Entrée utilisateur Python Formatage de chaîne Python

La gestion des fichiers

Gestion des fichiers Python Fichiers de lecture Python Python écrire/créer des fichiers Python Supprimer des fichiers

Modules Python

Tutoriel NumPy Procédure pas à pas Panda Tutoriel Scipy

Python Matplotlib

Introduction à Matplotlib Matplotlib Commencer MatplotlibPyplot Tracé Matplotlib Marqueurs Matplotlib Ligne Matplotlib Étiquettes Matplotlib Grille Matplotlib Sous-parcelles Matplotlib Matplotlib Scatter Barres Matplotlib Histogrammes Matplotlib Graphiques à secteurs Matplotlib

Apprentissage automatique

Commencer Mode médian moyen Écart-type Centile Diffusion des données Répartition normale des données Nuage de points Régression linéaire Régression polynomiale Régression multiple Échelle Former/Tester Arbre de décision

Python MySQL

MySQL Premiers pas Créer une base de données MySQL Créer une table MySQL Insertion MySQL Sélectionnez MySQL MySQL Où Trier MySQL par Supprimer MySQL Table de dépôt MySQL Mise à jour MySQL Limite MySQL Rejoindre MySQL

Python MongoDB

MongoDB Commencer MongoDB Créer une base de données Créer une collection MongoDB Insertion MongoDB Trouver MongoDB Requête MongoDB Tri MongoDB Supprimer MongoDB Collection de dépôt MongoDB Mise à jour MongoDB Limite MongoDB

Référence Python

Présentation de Python Fonctions intégrées Python Méthodes de chaîne Python Méthodes de liste Python Méthodes du dictionnaire Python Méthodes Python Tuple Méthodes d'ensemble Python Méthodes de fichier Python Mots-clés Python Exceptions Python Glossaire Python

Référence des modules

Module aléatoire Module de demandes Module Statistiques Module de mathématiques Module cMath

Python Comment

Supprimer les doublons de liste Inverser une chaîne Additionner deux nombres

Exemples Python

Exemples Python Compilateur Python Exercices Python Quizz Python Certificat Python

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. Ce sont des conteneurs itérables à partir desquels vous pouvez obtenir un itérateur.

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

Exemple

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

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

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

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 = "banana"
myit = iter(mystr)

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

Boucler dans un itérateur

Nous pouvons également utiliser une forboucle pour parcourir un objet itérable :

Exemple

Itérer les valeurs d'un tuple :

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)

Exemple

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

mystr = "banana"

for x in mystr:
  print(x)

La forboucle 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__(), qui vous permet d'effectuer une initialisation lors de la création de l'objet.

La __iter__()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.

La __next__()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.) :

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

ArrêterItération

L'exemple ci-dessus continuerait indéfiniment si vous aviez suffisamment d'instructions next() ou s'il était utilisé dans une forboucle.

Pour éviter que l'itération ne se poursuive indéfiniment, nous pouvons utiliser l' StopIterationinstruction.

Dans la __next__()méthode, nous pouvons ajouter une condition de terminaison 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 :

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)