Un itérateur est un objet qui contient un nombre dénombrable de valeurs.
Les itérateurs sont des objets itérables, ce qui signifie que vous pouvez parcourir toutes les valeurs.
Techniquement parlant, en Python, un itérateur est un objet qui implémente le protocole itérateur, qui contient les méthodes iter() et next#🎜🎜 #( ).
Iterator VS Objet itérable (Iterable) 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 la méthode iter() pour obtenir l'itérateur : Le groupe renvoie un itérateur et imprime chaque valeur :mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
apple banana cherry
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
Run Instance#🎜 🎜#
b a n a n a
#🎜 🎜#Exemple
Itérer sur les valeurs du tuple :
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
Exécuter l'instance
python_iterator_loop_1.py apple banana cherry
Itérer sur la chaîne Caractères dans : mystr = "banana"
for x in mystr:
print(x)
python_iterator_loop_2.py b a n a n a
Astuce : La boucle for crée en fait un objet itérateur et s'exécute la méthode next() pour chaque boucle.
Créer un itérateur
Pour créer un objet/classe en tant qu'itérateur, vous devez implémenter iter() et
next pour le méthode objet().
Comme vous l'avez appris dans le chapitre Classes/Objets Python, toutes les classes ont une fonction nommée
init() qui vous permet de faire une initialisation lors de la création d'un objet. La méthode
iter() fonctionne de la même manière, vous pouvez effectuer des opérations (initialisation, etc.) mais devez toujours renvoyer l'objet itérateur lui-même. La méthode next() 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, à partir de 1, chaque séquence augmentera de 1 (renvoie 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))
python_iterator_create_1.py 1 2 3 4 5
StopIterationSi vous avez suffisamment d'instructions next(), ou dans un for boucle utilisée dans , l'exemple ci-dessus continuera pour toujours.
Pour éviter que l'itération ne prenne une éternité, nous pouvons utiliser l'instruction StopIteration. Dans la méthode
next(), nous pouvons ajouter une condition de terminaison pour générer une erreur si l'itération se termine le nombre de fois spécifié :
#🎜🎜 ##🎜 🎜#Instanceclass 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)
RunningInstance
python_iterator_create_2.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!