Maison  >  Article  >  développement back-end  >  Comment puis-je réutiliser un générateur Python plusieurs fois ?

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

DDD
DDDoriginal
2024-10-31 20:00:02261parcourir

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>

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>

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!

Déclaration:
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