Maison  >  Article  >  développement back-end  >  Comment remodeler un générateur Python pour plusieurs itérations ?

Comment remodeler un générateur Python pour plusieurs itérations ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 04:58:28625parcourir

How to Reshape a Python Generator for Multiple Iterations?

Réinitialisation des objets générateurs en Python

Les générateurs en Python sont un moyen efficace d'évaluer paresseusement les données, produisant des valeurs une par une. Cependant, les générateurs ne peuvent être itérés qu’une seule fois. Si vous devez parcourir un générateur plusieurs fois, il existe plusieurs options :

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

Le moyen le plus simple de réinitialiser un générateur consiste simplement à exécuter le générateur. fonctionner à nouveau. Cela créera un nouvel objet générateur qui pourra être itéré indépendamment.

<code class="python">y = FunctionWithYield()
for x in y: print(x)
y = FunctionWithYield()
for x in y: print(x)</code>

Option 2 : stocker les résultats du générateur en mémoire

Vous pouvez également stocker les résultats du générateur dans une structure de données, comme une liste, en mémoire. Cela vous permettra 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>

Considérations

Le choix de l'option dépendra de vos exigences de performances spécifiques. L'option 1 est plus efficace du point de vue de la mémoire, car elle ne nécessite pas de stocker les résultats du générateur. Cependant, l'option 2 est plus efficace du point de vue du traitement, car elle ne nécessite pas de réexécuter la fonction génératrice.

En fin de compte, la meilleure façon de réinitialiser un objet générateur en Python dépendra du contexte spécifique dans lequel il est utilisé.

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