Comment puis-je réutiliser un générateur Python plusieurs fois ?

DDD
Libérer: 2024-10-31 20:00:02
original
353 Les gens l'ont consulté

How can I reuse a Python generator multiple times?

Réutilisation des objets du générateur Python :

Les générateurs, une fonctionnalité puissante de Python, sont des séquences de valeurs calculées paresseusement à la demande. Cependant, en raison de leur nature, les générateurs ne peuvent pas être rembobinés. Si vous souhaitez réutiliser un générateur plusieurs fois, vous avez plusieurs options :

1. Redémarrage de la fonction générateur :

Vous pouvez simplement réexécuter la fonction générateur pour redémarrer le processus de génération :

<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

2. Stockage des résultats du générateur :

Vous pouvez également stocker les résultats du générateur dans une structure de données conservant la mémoire, telle qu'une liste ou un fichier sur disque. Cela vous permet de parcourir les résultats plusieurs fois :

<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

Compromis :

Le choix entre ces options dépend de vos besoins spécifiques :

  • Redémarrage :Cette approche ne nécessite aucune mémoire supplémentaire, mais elle implique de recalculer les valeurs du générateur à chaque redémarrage.
  • Stockage des résultats : Cette option permet plusieurs itérations sans recalcul, mais elle consomme de la mémoire proportionnellement au nombre de valeurs du générateur.

En substance, vous êtes confronté au compromis classique entre l'utilisation de la mémoire et le temps de traitement. Il n'existe pas de solution parfaite pour « rembobiner » un générateur sans compromettre l'un ou l'autre.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal