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.