"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment réinitialiser un objet générateur en Python ?

Comment réinitialiser un objet générateur en Python ?

Publié le 2024-11-09
Parcourir:633

How to Reset a Generator Object in Python?

Réinitialisation d'un objet générateur en Python : explorer des alternatives

Les générateurs offrent un moyen efficace d'itérer sur une séquence de valeurs sans créer de liste dans mémoire. Cependant, une fois qu’un générateur a rendu toutes ses valeurs, il est épuisé et ne peut pas être réutilisé directement. Cela soulève la question de savoir comment réinitialiser un objet générateur en Python.

Malheureusement, les générateurs n'ont pas de méthode de réinitialisation intégrée. Pour réutiliser un générateur, vous disposez de plusieurs options :

  1. Exécuter à nouveau la fonction générateur : L'approche la plus simple consiste simplement à réexécuter la fonction générateur, créant ainsi un nouvel objet générateur. Cette option garantit que le générateur démarre à partir de son état initial, en recalculant toutes les valeurs nécessaires.
  2. Stocker les résultats du générateur dans une structure de données : Vous pouvez également stocker les résultats du générateur dans une structure de données. structure de données telle qu’une liste ou un tableau. Cela vous permet de parcourir les valeurs plusieurs fois sans réexécuter la fonction de générateur. Cependant, cette option alloue de la mémoire pour l'intégralité de la séquence de valeurs, ce qui peut être un problème pour les grands générateurs.

Considérez l'extrait de code suivant pour chaque option :

Option 1 (Exécutez à nouveau la fonction générateur) :

y = FunctionWithYield()
for x in y: 
    print(x)
y = FunctionWithYield()
for x in y: 
    print(x)

Option 2 (Stocker les résultats du générateur dans une liste) :

y = list(FunctionWithYield())
for x in y: 
    print(x)
# Can iterate again:
for x in y: 
    print(x)

Le choix entre ces options dépend des exigences spécifiques de votre programme. L'option 1 est plus efficace pour les petits générateurs ou lorsque la réexécution de la fonction du générateur ne nécessite pas de calcul coûteux. L'option 2 est plus adaptée aux grands générateurs où le stockage des résultats en mémoire est possible.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3