🎯 Gerador de Expressões em Python
Em poucas palavras
Definição técnica ou simplificada do conceito.
📝 Notas e Desenvolvimento
🔗 Conexões e Contexto
- Atlas: MdC - Programação
- Notas Relacionadas:
📚 Referências e Fontes
Links Externos
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:
-
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 esgoteQuando o gerador não tem mais elementos, ele levanta uma exceção
StopIteration. -
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 -
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