Qu'est-ce qu'un itérateur Python et comment l'utiliser

PHPz
Libérer: 2023-05-12 13:19:06
avant
1110 Les gens l'ont consulté

Python Iterator

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))
Copier après la connexion

Exécution d'instance

apple
banana
cherry
Copier après la connexion
#🎜🎜 #Les chaînes paires sont des objets itérables et peuvent renvoyer des itérateurs : # 🎜🎜#Instance

Les chaînes sont également des objets itérables, contenant une série 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))
Copier après la connexion

Run Instance#🎜 🎜#

b
a
n
a
n
a
Copier après la connexion

Traversal iterator

Nous pouvons également utiliser une boucle for pour parcourir des objets itérables :

#🎜 🎜#Exemple

Itérer sur les valeurs du tuple :

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

for x in mytuple:
  print(x)
Copier après la connexion

Exécuter l'instance

python_iterator_loop_1.py
apple
banana
cherry
Copier après la connexion

Instance

Itérer sur la chaîne Caractères dans :

mystr = "banana"

for x in mystr:
  print(x)
Copier après la connexion
Exécuter l'instance

python_iterator_loop_2.py
b
a
n
a
n
a
Copier après la connexion

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))
Copier après la connexion
Running instance

python_iterator_create_1.py
1
2
3
4
5
Copier après la connexion

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é :

#🎜🎜 ##🎜 🎜#Instance

Arrêter 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)
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal