Iterator python

Iterator python

Nous allons discuter de l'itérateur Python dans cet article. Iterator est un objet avec état et il se souvient où il est et quand il itère. Il renvoie l'objet unique. Il utilise les méthodes iter () et suivant (). Ceci est utilisé pour former les boucles, les compréhensions et les générateurs Python.

Convertissez n'importe quelle séquence en itérateur en utilisant la syntaxe suivante:

iter (séquence)

Pour accéder à l'élément suivant, la fonction suivante () est utilisée. Tout objet dans Python qui prend en charge les deux méthodes précédentes est appelé iterator. Pour vérifier ceci, exécutez la méthode intégrée Dir () sur l'objet.

Exemple: print (dir (liste))

Ici, la liste n'est pas un itérateur car il n'a pas la méthode «__Next__».

Si nous essayons d'accéder aux éléments suivants, nous obtenons l'exception comme suit:

Pour le convertir en tant qu'Iterator, passez la liste à la méthode ITER comme indiqué dans ce qui suit. Après cela, nous voyons la méthode «__Next__».

Différence entre itérateur et itérable

ITÉRÉABLE SIGNIFIQUE NOUS POUVONS BOUTER LES VALEURES COMME LISTE, TLEPLE, STRING, etc. Tous les objets ont une méthode iter () qui est utilisée pour obtenir un itérateur. Nous verrons quelques exemples pour mieux le comprendre:

Exemple:

1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
num = [1,2,3,4,5]
numsiterator = iter (num) #same as numsiterator = nums.__iter __ ()
# En interne, il appellera la méthode __iter__ Dunder
Imprimer (Next (numSiterator)) # Access 1er élément
Imprimer (Next (numsiterator)) # Access 2nd Element
Imprimer (Next (numsiterator)) # Access 3rd Element et ainsi de suite…
imprimer (Next (numsiterator))
imprimer (Next (numsiterator))
imprimer (Next (numsiterator))

Lorsque nous atteignons la fin de la liste, cela augmente une erreur d'arrêt.

Note: Tout ce qui commence par le double soulignement et se termine par le double soulignement dans Python est appelé méthode Dunder.

Cas d'utilisation des itérateurs

  1. La boucle FOR utilise les itérateurs en arrière-plan.

Exemple 1:

Nous imprimons chaque caractère en utilisant la boucle pour.

1
2
3
4
5
S = "Bonjour"
Pour Char in S:
imprimer (char)

Exemple 2:

Nous imprimons la même chaîne en utilisant les itérateurs.

1
2
3
4
5
6
7
8
9
dix
11
S = "Bonjour"
mot = iter (s)
Bien que vrai:
essayer:
item = suivant (mot)
Imprimer (article)
sauf une étape:
casser
  1. Un autre cas d'utilisation de l'itérateur consiste à ajouter les méthodes suivantes () et iter () à notre classe et le faire comme itérable.

Exemple 3:

Pour construire notre propre fonction de plage, la fonction de plage donne la plage de valeurs du début à la fin (exclusive).

1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
classe MyRange:
def __init __ (self, start, arrêt):
soi.val = commencer
soi.stop = stop
def __iter __ (soi):
se retourner
def __Next __ (self):
Si vous-même.val> = self.arrêt:
augmenter la pertinence
courant = soi.val
soi.val + = 1
Retour courant
nums = myRange (1,5)
Imprimer (Suivant (NUMS))
Imprimer (Suivant (NUMS))
Imprimer (Suivant (NUMS))
Imprimer (Suivant (NUMS))
Imprimer (Suivant (NUMS))
  1. Un autre cas d'utilisation de l'itérateur est les générateurs Python. Les générateurs sont une méthode normale qui donne la valeur en tant que sortie et il se souvient de l'état lorsqu'il est appelé la prochaine fois. Les générateurs sont également des itérateurs, mais les méthodes Dunder Iter () et Next () sont créées automatiquement.

Nous écrivons la fonction de plage précédente à l'aide du générateur.

Exemple 4:

1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
def my_range (début, fin):
courant = démarrer
tandis que le courant < end:
courant de rendement
courant + = 1
nums = my_range (1,5)
Imprimer (Suivant (NUMS))
Imprimer (Suivant (NUMS))
Imprimer (Suivant (NUMS))
Imprimer (Suivant (NUMS))

Ou nous pouvons appeler ce qui suit qui produit la même sortie que l'exemple précédent.

1
2
3
pour num en num:
imprimer (num)

Conclusion

L'itérateur doit ne pas se terminer tant que la valeur est là; Cela nous fait obtenir la valeur. Il récupère une valeur à la fois. Il est vraiment utile lors de l'écriture des programmes efficaces de la mémoire où nous avons de nombreuses valeurs que nous ne pouvons pas mettre en mémoire si nous les mettons dans une liste ou un tuple. Nous pouvons enregistrer la ressource avec ce.