logo

Itérateurs en Python

Un itérateur en Python est un objet utilisé pour parcourir des objets itérables tels que des listes, des tuples, des dicts et des ensembles. L'objet itérateurs Python est initialisé à l'aide du itérer() méthode. Il utilise le suivant() méthode d’itération.

    __iter__() : La méthode iter() est appelée pour l'initialisation d'un itérateur. Cela renvoie un objet itérateur __next__() : La méthode suivante renvoie la valeur suivante pour l'itérable. Lorsque nous utilisons une boucle for pour parcourir n'importe quel objet itérable, elle utilise en interne la méthode iter() pour obtenir un objet itérateur, qui utilise en outre la méthode next() pour parcourir. Cette méthode déclenche un StopIteration pour signaler la fin de l'itération.

Exemple Python iter()

Python3








string>=> 'GFG'> ch_iterator>=> iter>(string)> print>(>next>(ch_iterator))> print>(>next>(ch_iterator))> print>(>next>(ch_iterator))>



>

>

Sortir :

police de caractères
G F G>

Création et boucle sur un itérateur à l'aide de iter() et next()

Vous trouverez ci-dessous un simple itérateur Python qui crée un type d'itérateur qui itère de 10 à une limite donnée. Par exemple, si la limite est 15, alors il imprime 10 11 12 13 14 15. Et si la limite est 5, alors il n'imprime rien.

Python3




# A simple Python program to demonstrate> # working of iterators using an example type> # that iterates from 10 to given value> # An iterable user defined type> class> Test:> ># Constructor> >def> __init__(>self>, limit):> >self>.limit>=> limit> ># Creates iterator object> ># Called when iteration is initialized> >def> __iter__(>self>):> >self>.x>=> 10> >return> self> ># To move to next element. In Python 3,> ># we should replace next with __next__> >def> __next__(>self>):> ># Store current value ofx> >x>=> self>.x> ># Stop iteration if limit is reached> >if> x>>self>.limit:> >raise> StopIteration> ># Else increment and return old value> >self>.x>=> x>+> 1>;> >return> x> # Prints numbers from 10 to 15> for> i>in> Test(>15>):> >print>(i)> # Prints nothing> for> i>in> Test(>5>):> >print>(i)>

>

>

Sortir:

10 11 12 13 14 15>

Itérer sur un itérable intégré à l'aide de la méthode iter()

Dans les itérations suivantes, l'état d'itération et la variable itérateur sont gérés en interne (nous ne pouvons pas le voir) à l'aide d'un objet itérateur pour parcourir l'itérable intégré comme liste , tuple , dicter , etc.

Python3




# Sample built-in iterators> # Iterating over a list> print>(>'List Iteration'>)> l>=> [>'geeks'>,>'for'>,>'geeks'>]> for> i>in> l:> >print>(i)> > # Iterating over a tuple (immutable)> print>(>' Tuple Iteration'>)> t>=> (>'geeks'>,>'for'>,>'geeks'>)> for> i>in> t:> >print>(i)> > # Iterating over a String> print>(>' String Iteration'>)> s>=> 'Geeks'> for> i>in> s :> >print>(i)> > # Iterating over dictionary> print>(>' Dictionary Iteration'>)> d>=> dict>()> d[>'xyz'>]>=> 123> d[>'abc'>]>=> 345> for> i>in> d :> >print>(>'%s %d'> %>(i, d[i]))>

exemple d'élagage alpha bêta
>

>

Sortir:

List Iteration geeks for geeks Tuple Iteration geeks for geeks String Iteration G e e k s Dictionary Iteration xyz 123 abc 345>

Itérable vs Itérateur

Python itérable et Python itérateur sont différents. La principale différence entre eux est que l'itérable en Python ne peut pas enregistrer l'état de l'itération, alors que dans les itérateurs, l'état de l'itération en cours est enregistré.

Note: Chaque itérateur est également un itérable, mais tous les itérables ne sont pas un itérateur en Python .
En savoir plus – Différence entre itérable et itérateur.

Itérer sur un itérable

Itérer sur chaque élément de l'itérable.

Python3


comment convertir une chaîne en entier java



tup>=> (>'a'>,>'b'>,>'c'>,>'d'>,>'e'>)> for> item>in> tup:> >print>(item)>

>

>

Sortir:

a b c d e>

Itérer sur un itérateur

Python3




tup>=> (>'a'>,>'b'>,>'c'>,>'d'>,>'e'>)> # creating an iterator from the tuple> tup_iter>=> iter>(tup)> print>(>'Inside loop:'>)> # iterating on each item of the iterator object> for> index, item>in> enumerate>(tup_iter):> >print>(item)> ># break outside loop after iterating on 3 elements> >if> index>=>=> 2>:> >break> # we can print the remaining items to be iterated using next()> # thus, the state was saved> print>(>'Outside loop:'>)> print>(>next>(tup_iter))> print>(>next>(tup_iter))>

>

>

Sortir:

Inside loop: a b c Outside loop: d e>

Obtenir une erreur StopIteration lors de l'utilisation de l'itérateur

Iterable en Python peut être itéré plusieurs fois, mais les itérateurs génèrent une erreur StopIteration lorsque tous les éléments sont déjà itérés.

Ici, nous essayons d'obtenir l'élément suivant de l'itérateur après la fin de la boucle for. Puisque l’itérateur est déjà épuisé, il génère une exception StopIteration. Alors qu'en utilisant un itérable, nous pouvons itérer plusieurs fois en utilisant la boucle for ou obtenir des éléments en utilisant l'indexation.

Python3




menu des paramètres Android

iterable>=> (>1>,>2>,>3>,>4>)> iterator_obj>=> iter>(iterable)> print>(>'Iterable loop 1:'>)> # iterating on iterable> for> item>in> iterable:> >print>(item, end>=>','>)> print>(>' Iterable Loop 2:'>)> for> item>in> iterable:> >print>(item, end>=>','>)> print>(>' Iterating on an iterator:'>)> # iterating on an iterator object multiple times> for> item>in> iterator_obj:> >print>(item, end>=>','>)> print>(>' Iterator: Outside loop'>)> # this line will raise StopIteration Exception> # since all items are iterated in the previous for-loop> print>(>next>(iterator_obj))>

>

>

Sortir:

Iterable loop 1: 1,2,3,4, Iterable Loop 2: 1,2,3,4, Iterating on an iterator: 1,2,3,4, Iterator: Outside loop Traceback (most recent call last): File 'scratch_1.py', line 21, in print(next(iterator_obj)) StopIteration>