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

Susan Sarandon
Libérer: 2024-10-30 14:02:03
original
462 Les gens l'ont consulté

How to Reset a Generator Object in Python?

Réinitialiser 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, en créant 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 : Alternativement, vous pouvez stocker les résultats du générateur dans un 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 poser problème pour les gros générateurs.

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

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

<code class="python">y = FunctionWithYield()
for x in y: 
    print(x)
y = FunctionWithYield()
for x in y: 
    print(x)</code>
Copier après la connexion

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

<code class="python">y = list(FunctionWithYield())
for x in y: 
    print(x)
# Can iterate again:
for x in y: 
    print(x)</code>
Copier après la connexion

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 réalisable.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!