🎯 Gerador de Expressões em Python

Em poucas palavras

Definição técnica ou simplificada do conceito.


📝 Notas e Desenvolvimento


🔗 Conexões e Contexto


📚 Referências e Fontes

Citações Diretas

📂 Outros Conteúdos Preservados

Sintaxe

Uma expressão geradora usa parênteses () em vez de colchetes [] (usados em compreensões de lista) para definir a lógica de geração:

gerador = (expressao for item in iteravel if condicao)

Como Funcionam

Quando uma expressão geradora é executada, ela não retorna uma lista, mas sim um objeto gerador (um tipo de iterador). Este objeto pode ser iterado para produzir os valores um por um.

Exemplo de Criação:

colors = ['black', 'white']
sizes = ['S', 'M', 'L']
 
### Cria uma expressão geradora
 
combinacoes = (f'{c} {s}' for c in colors for s in sizes)
 
### O resultado é um objeto gerador, não uma lista
 
 
 
### print(combinacoes) # Saída: <generator object <genexpr> at 0x...>
 

Consumindo uma Expressão Geradora

Para obter os valores de um objeto gerador, você pode:

  1. Usar a função next(): Para obter um valor por vez.

    print(next(combinacoes)) # Saída: 'black S'
    print(next(combinacoes)) # Saída: 'black M'
    # ... e assim por diante até que o gerador se esgote

    Quando o gerador não tem mais elementos, ele levanta uma exceção StopIteration.

  2. Iterar com um loop for: Esta é a forma mais comum e idiomática de consumir geradores.

    for item in combinacoes:
        print(item)
    # Saída:
    # black S
    # black M
    # black L
    # white S
    # white M
    # white L
  3. Converter para uma lista (ou outra coleção): Embora isso anule o benefício de economia de memória para grandes conjuntos de dados, é possível converter o gerador em uma lista se todos os elementos forem necessários de uma vez.

    lista_combinacoes = list(combinacoes)
    # print(lista_combinacoes)
    # Saída: ['black S', 'black M', 'black L', 'white S', 'white M', 'white L']

Vantagens

  • Eficiência de Memória: Não armazena todos os resultados na memória, ideal para grandes datasets.
  • Avaliação Preguiçosa: Os valores são calculados apenas quando são necessários, o que pode economizar tempo de processamento se nem todos os valores forem consumidos.

:: Referência :: PEP 289 – Generator Expressions