Encadeamento 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.
12345678910111213141516171819def 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]
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.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo