"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como redefinir um objeto gerador em Python?

Como redefinir um objeto gerador em Python?

Publicado em 2024-11-09
Navegar:260

How to Reset a Generator Object in Python?

Redefinindo um objeto gerador em Python: explorando alternativas

Os geradores fornecem uma maneira eficiente de iterar sobre uma sequência de valores sem criar uma lista em memória. No entanto, uma vez que um gerador tenha produzido todos os seus valores, ele estará esgotado e não poderá ser reutilizado diretamente. Isso levanta a questão de como redefinir um objeto gerador em Python.

Infelizmente, os geradores não possuem um método de redefinição integrado. Para reutilizar um gerador, você tem várias opções:

  1. Executar a função gerador novamente: A abordagem mais simples é simplesmente executar a função gerador novamente, criando um novo objeto gerador. Esta opção garante que o gerador inicie a partir de seu estado inicial, recalculando quaisquer valores necessários.
  2. Armazenar os resultados do gerador em uma estrutura de dados: Alternativamente, você pode armazenar os resultados do gerador em um estrutura de dados, como uma lista ou array. Isso permite iterar os valores várias vezes sem executar novamente a função do gerador. No entanto, esta opção aloca memória para toda a sequência de valores, o que pode ser uma preocupação para grandes geradores.

Considere o seguinte trecho de código para cada opção:

Option 1 (Execute a função geradora novamente):

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

Opção 2 (armazenar os resultados do gerador em uma lista):

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

A escolha entre essas opções depende dos requisitos específicos do seu programa. A opção 1 é mais eficiente para pequenos geradores ou quando reexecutar a função do gerador não é computacionalmente caro. A opção 2 é mais adequada para grandes geradores onde é viável armazenar os resultados na memória.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3