Expressões Geradoras
Em Python, as expressões geradoras são uma maneira concisa e eficiente de criar iteradores para grandes conjuntos de dados. Elas são semelhantes às listas de compreensão, mas economizam memória ao gerar valores sob demanda. Neste tutorial, vamos explorar o conceito de expressões geradoras, entender como elas funcionam e aprender como usá-las para manipular dados de forma eficiente em Python.
1. O Que São Expressões Geradoras?
Expressões geradoras são construções sintáticas que geram valores sob demanda. Elas são criadas usando parênteses ()
e são semelhantes às listas de compreensão, mas geram um objeto gerador, que é uma forma de iterador.
2. Sintaxe das Expressões Geradoras:
A sintaxe básica de uma expressão geradora é semelhante à de uma lista de compreensão, mas usa parênteses em vez de colchetes:
gerador = (expressao for variavel in iteravel if condicao)
expressao
: A expressão a ser avaliada para cada item.variavel
: A variável que representa cada item do iterável.iteravel
: O iterável de onde os valores são gerados.condicao
: (Opcional) Uma condição que filtra os itens do iterável.
3. Criando Expressões Geradoras:
Exemplo 1: Gerando Números Pares:
pares = (x for x in range(10) if x % 2 == 0)
for numero in pares:
print(numero) # Saída: 0, 2, 4, 6, 8
Neste exemplo, a expressão geradora gera números pares de 0 a 9.
Exemplo 2: Gerando Quadrados dos Números:
quadrados = (x**2 for x in range(5))
for numero in quadrados:
print(numero) # Saída: 0, 1, 4, 9, 16
Neste exemplo, a expressão geradora gera os quadrados dos números de 0 a 4.
4. Vantagens das Expressões Geradoras:
- Economia de Memória: As expressões geradoras geram valores sob demanda, economizando memória, especialmente para grandes conjuntos de dados.
- Eficiência: Elas são eficientes em termos de desempenho, pois não calculam todos os valores de uma vez.
5. Usando Funções como Expressões Geradoras:
Expressões geradoras também podem ser usadas com funções, permitindo manipulações mais complexas de dados.
def multiplicar_por_dois(x):
return x * 2
numeros = [1, 2, 3, 4, 5]
resultados = (multiplicar_por_dois(x) for x in numeros)
for resultado in resultados:
print(resultado) # Saída: 2, 4, 6, 8, 10
Neste exemplo, a função multiplicar_por_dois()
é aplicada a cada item da lista numeros
usando uma expressão geradora.
As expressões geradoras são uma ferramenta poderosa em Python para manipular grandes conjuntos de dados de forma eficiente e elegante. Ao criar expressões geradoras, você pode economizar memória e melhorar o desempenho do seu código, tornando-o mais eficiente e escalável.