~/questoes/python
Generators são funções especiais que geram valores um de cada vez, sob demanda, em vez de criar e armazenar uma coleção inteira na memória. Eles usam a palavra-chave yield para pausar e retomar a execução, economizando recursos significativamente quando se trabalha com grandes volumes de dados.
Generators geram valores sob demanda usando yield, economizando memória porque não armazenam todos os dados simultaneamente como as listas fazem. Isso é especialmente importante quando você trabalha com grandes volumes de dados ou sequências infinitas.
Generators não são sempre mais rápidos em velocidade de processamento. A vantagem principal deles é a economia de memória, não necessariamente a velocidade. Para dados já carregados, listas podem até ser mais rápidas em operações específicas.
Generators e listas trabalham com dados mutáveis e imutáveis da mesma forma. A diferença não está na capacidade de armazenar dados imutáveis, mas em como e quando os dados são gerados e armazenados na memória.
Generators não removem duplicatas automaticamente. Essa é uma funcionalidade que você precisa implementar manualmente ou usar estruturas como sets. Generators apenas geram valores sob demanda conforme necessário.
Essa é a principal vantagem dos generators. Eles geram valores um de cada vez usando yield, sem precisar armazenar toda a sequência na memória, o que é especialmente útil para grandes volumes de dados ou listas infinitas.