Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Encadeamento e Composição de Iteradores | Python Iterators
Conceitos de Programação Funcional em Python

bookEncadeamento e Composição de Iteradores

Deslize para mostrar o menu

Encadeamento e composição de iteradores permitem construir pipelines de dados poderosos em Python. Ao conectar funções simples de iteradores ou geradores, é possível processar dados passo a passo, com cada etapa transformando ou filtrando os dados antes de passá-los para a próxima. Essa abordagem é especialmente útil quando se deseja aplicar múltiplas operações em sequência, como filtrar itens e depois transformá-los, ou combinar dados de várias fontes. O vídeo acima ilustra como utilizar pipelines de geradores para manter o código modular e eficiente em termos de memória, evitando a necessidade de criar listas intermediárias.

Para ver isso na prática, considere um cenário em que você possui uma sequência de números e deseja filtrar os números pares, em seguida elevar ao quadrado os números restantes. Isso pode ser feito encadeando duas funções geradoras: uma para filtrar e outra para transformar. Essa abordagem garante que cada item seja processado apenas quando necessário, tornando o código conciso e eficiente.

12345678910111213141516171819
def filter_odds(numbers): for n in numbers: if n % 2 != 0: yield n def square_numbers(numbers): for n in numbers: yield n ** 2 # Original data data = range(10) # Chain the generators: first filter, then transform filtered = filter_odds(data) squared = square_numbers(filtered) # Collect results result = list(squared) print(result) # Output: [1, 9, 25, 49, 81]
copy

A primeira função, filter_odds, recebe um iterável de números e gera apenas aqueles que são ímpares. A segunda função, square_numbers, recebe um iterável e gera o quadrado de cada número. Ao passar a saída de filter_odds diretamente para square_numbers, cria-se um pipeline: primeiro filtrando, depois transformando os dados. O resultado final é coletado em uma lista e exibido, mostrando os quadrados de todos os números ímpares de 0 a 9.

Esse método é eficiente em termos de memória porque cada valor é processado um de cada vez, em vez de criar listas intermediárias. Também mantém o código modular, já que cada função geradora executa uma única tarefa e pode ser reutilizada em diferentes pipelines.

question mark

Qual das alternativas a seguir é um benefício de encadear iteradores e geradores em Python?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 5. Capítulo 6
some-alt