"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo restablecer un objeto generador en Python?

¿Cómo restablecer un objeto generador en Python?

Publicado el 2024-11-09
Navegar:674

How to Reset a Generator Object in Python?

Restablecer un objeto generador en Python: explorar alternativas

Los generadores proporcionan una manera eficiente de iterar sobre una secuencia de valores sin crear una lista en memoria. Sin embargo, una vez que un generador ha producido todos sus valores, se agota y no se puede reutilizar directamente. Esto plantea la pregunta de cómo restablecer un objeto generador en Python.

Desafortunadamente, los generadores no tienen un método de restablecimiento incorporado. Para reutilizar un generador, tiene varias opciones:

  1. Ejecutar la función del generador nuevamente: El enfoque más simple es simplemente ejecutar la función del generador nuevamente, creando un nuevo objeto generador. Esta opción garantiza que el generador comience desde su estado inicial, recalculando los valores necesarios.
  2. Almacenar los resultados del generador en una estructura de datos: Alternativamente, puede almacenar los resultados del generador en una estructura de datos como una lista o matriz. Esto le permite iterar sobre los valores varias veces sin volver a ejecutar la función del generador. Sin embargo, esta opción asigna memoria para toda la secuencia de valores, lo que puede ser una preocupación para los generadores grandes.

Considere el siguiente extracto de código para cada opción:

Opción 1 (Ejecute la función del generador nuevamente):

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

Opción 2 (Almacenar los resultados del generador en una lista):

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

La elección entre estas opciones depende de los requisitos específicos de su programa. La opción 1 es más eficiente para generadores pequeños o cuando volver a ejecutar la función del generador no es costoso desde el punto de vista computacional. La opción 2 es más adecuada para generadores grandes donde es factible almacenar los resultados en la memoria.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3