itérateur Python

Comment créer un itérateur Python : un guide

Les itérateurs sont absolument partout dans Python ; il est difficile d’apprendre même les bases sans entendre le mot "itérateur" ou "itérable".

Un itérateur est un objet sur lequel on peut itérer. Bien qu’il existe des objets intégrés sur lesquels vous pouvez itérer, vous pouvez également définir les vôtres.

Dans ce guide, nous allons parler des itérateurs Python, de leur fonctionnement et comment vous pouvez les utiliser dans votre code. Nous allons construire notre propre itérateur afin que vous puissiez en savoir plus sur leurs fonctionnalités de base en action. Le code de ce guide est compatible avec les installations Python 3.x.

Commençons !

Qu’est-ce qu’un itérateur ?

Itérateurs sont des objets sur lesquels vous pouvez itérer. Un itérateur renverra les données de cet objet, un élément à la fois.

Vous pouvez vérifier si un objet est itérable en essayant de l’exécuter via un boucle for ; si vous pouvez parcourir l’objet en boucle, cela signifie qu’il est itérable. Les chaaînes, les listes, les tuples et les dictionnaires sont des exemples de types de données intégrés qui sont des objets itérables.

Un objet itérateur en Python doit avoir deux méthodes :

  • __iter__() : Cela vous permet de récupérer un itérateur.
  • __next__() : Cela vous permet d’obtenir la valeur suivante dans un itérateur.

Les traits de soulignement __ sont utilisés dans les itérateurs car ils désignent des fonctions spéciales. Pour définir un itérateur, vous devez utiliser ces deux fonctions spéciales. Ensemble, ils sont appelés le protocole itérateur. Ces méthodes sont généralement prononcées comme " méthodes iter et suivantes ".

81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi dans la technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Nous allons commencer par le bases : construire un itérateur infini. C’est le type d’itérateur le plus simple. C’est si simple que ça va continuer pour toujours. Nous corrigerons ce problème plus tard dans le didacticiel.

Commençons par définir une classe appelée Cakes, qui sera notre classe d’itérateur :

Nous avons déclaré un __init__ qui sera exécutée dès qu’un objet de notre classe sera instancié. La méthode __init__ est appelée un constructeur. Dans cet exemple, notre méthode __init__ peut prendre une valeur : value.

Ensuite, nous allons créer notre protocole d’itérateur :

La méthode __iter__ est utilisée pour récupérer notre objet itérateur. Le __next__ nous permet de récupérer la valeur suivante dans l’objet itérable que nous spécifions.

Assurons-nous que notre code fonctionne jusqu’à présent. Nous allons le faire en définissant un objet de notre classe comme ceci :

Jusqu’ici, tout va bien ! Vous vous demandez peut-être : pourquoi ce code ne fait-il rien ? C’est parce que notre classe ne renvoie qu’une fonction d’itérateur.

Nous devons parcourir notre itérateur pour vérifier s’il fonctionne. Nous pouvons le faire en utilisant une boucle for-in :

Notre code renvoie :

La malédiction de l’éponge vanille ! Il continue d’être imprimé sur la console. Que se passe-t-il ? Nous venons de créer notre premier itérateur. C’est très simple, mais ça marche.

Test des itérateurs à l’aide de boucles for-in en Python

Avant de rendre notre itérateur utile, prenons un moment pour réviser le concept de une boucle for-in. Dans notre dernier exemple, nous avons écrit une boucle for-in pour tester notre code :

La façon dont fonctionne une boucle for-in est qu’elle crée d’abord un itérateur d’un objet en utilisant une méthode __iter__(). Une boucle for-in appelle ensuite __next__() jusqu’à ce qu’aucune valeur ne soit renvoyée.

Vous pouvez considérer une boucle for-in comme une simple boucle while. Bien qu’il existe des valeurs qu’un itérateur peut renvoyer, une boucle for-in renverra ces valeurs.

Créer un itérateur utile

Notre dernier itérateur n’est pas très utile. Il imprime seulement la même valeur encore et encore. Cela dit, c’est toujours un itérateur : il est capable de lire tous les objets d’un itérable.

Nous allons créer un itérateur qui itère sur un Tableau Python. Ce tableau contient une liste de g√¢teaux.

Pour empêcher notre itérateur de se répéter à l’infini, nous allons garder une trace du nombre de valeurs dans notre itérable , et combien de fois notre itérateur s’est exécuté. Cela nous permettra d’arrêter l’exécution de notre itérateur une fois qu’il aura parcouru tous les éléments d’un itérable.

Ouvrez un nouveau fichier Python et collez le code suivant :

Cet itérateur est un peu plus compliqué que le précédent. C’est pourquoi nous avons d’abord construit un itérateur infini. Dans cet itérateur, nous avons initialisé trois valeurs :

"Career Karma est entré dans ma vie au moment o√π j’en avais le plus besoin et m’a rapidement aidé à correspondre à un bootcamp. Deux mois après l’obtention de mon diplôme, j’ai trouvé l’emploi de mes rêves qui correspond à mes valeurs et à mes objectifs dans la vie !"

Venus, ingénieur logiciel chez Rockbot

Dans notre __next__() , nous avons ajouté un ‚"if‚" déclaration. Cette instruction vérifie si le nombre de fois o√π notre itérateur a été exécuté (count) est inférieur au nombre d’éléments sur lesquels notre iterable doit itérer (max).

Si "count‚" est inférieur à "max", notre itérateur trouvera la valeur suivante dans l’objet itérable. Il ajoutera alors 1 à notre "count" variable afin que nous puissions garder une trace du nombre d’objets à parcourir. Ensuite, nous renvoyons la valeur que nous avons calculée.

Il est important de noter que nous attribuons une valeur à la variable "to_return" avant d’incrémenter la variable "count". Cela garantit que nous pouvons accéder à la valeur sur le itération actuelle de notre itérateur.

Si nous avons parcouru chaque élément de notre liste, une exception appelée StopIteration sera levée. Cela arrête notre programme une fois que nous avons parcouru chaque élément de la list.

Voyons si notre itérateur fonctionne. Ajoutez le code suivant à votre programme principal et exécutez-le :

Notre code renvoie :
< /p>

Ajoutons quelques éléments supplémentaires à notre liste un voir ce qui se passe :

Notre code renvoie :

Nous l’avons fait ! Nous avons réussi à créer un itérateur qui parcourt notre liste de g√¢teaux. Vous méritez un g√¢teau ‚Äì ou même juste un cupcake ‚Äì pour aller aussi loin.

Conclusion

Les itérateurs vous permettent de créer des objets sur lesquels on peut itérer. Un itérateur peut parcourir une liste, une chaaîne ou un autre objet itérable et effectuer une action particulière.

√ätes-vous prêt à relever un défi ? Créez un itérateur qui parcourt une liste de nombres et renvoie chaque nombre multiplié par deux.

Le code de cet itérateur sera similaire à notre exemple ci-dessus ‚Äì il utilisera toujours le protocole itérateur ‚Äì mais il doit multiplier chaque nombre d’une liste par deux avant qu’il ne soit renvoyé au programme principal.

Maintenant, vous êtes prêt à commencer à écrire vos propres itérateurs en Python comme un expert !