1
resposta

[Sugestão] Faça como eu fiz: filtrando números pares

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Alex. Como vai?

É sensacional acompanhar a sua evolução constante! Você chegou ao arquivo Alura ex034.py dominando ferramentas que muitos programadores demoram bastante tempo para assimilar: as funções de alta ordem (filter, map), a lógica de funções anônimas (lambda) e a manipulação de strings com .split() e .join().

O seu código ficou excelente. A linha 9, onde você combinou list(filter(lambda x: x % 2 == 0, lista_completa)), reflete perfeitamente o paradigma de programação funcional. Você delegou para o Python o trabalho de iterar e filtrar a lista com base no resto da divisão por 2, o que é muito elegante. Na linha 12, o uso do " ".join(map(str, numeros_pares)) para reformatar a saída e exibi-la de forma limpa no terminal coroou o script. Resultado impecável!

Para enriquecer ainda mais a sua bagagem técnica sobre processamento de dados e coleções no Python, quero compartilhar duas dicas sobre abordagens alternativas muito valorizadas no mercado:


1. O Filtro "Pythonico" com List Comprehension

Nas nossas interações anteriores, conversamos sobre como o ecossistema Python adora as estruturas de List Comprehension por serem fáceis de ler. Embora o uso do filter() com lambda esteja 100% correto, na maioria dos projetos corporativos em Python os desenvolvedores preferem substituir essa combinação por uma compreensão de lista com uma condicional if no final.

Veja como a sua etapa número 3 poderia ser reescrita de uma forma extremamente limpa e popular:

# Filtra os números pares em uma única linha sem precisar de lambda ou filter
numeros_pares = [numero for numero in lista_completa if numero % 2 == 0]

Por que muitos preferem assim? A leitura fica quase idêntica ao inglês ou português falado: "guarde o numero para cada numero na lista_completa SE o numero for par". Além de ser considerada mais legível, essa estrutura costuma rodar ligeiramente mais rápido por não precisar invocar uma nova função de máquina para cada elemento da lista.


2. A Otimização Completa do Fluxo (Da Entrada à Saída)

Aproveitando que você já está super confortável com a função map(), nós podemos utilizá-la logo na entrada de dados. Em vez de fazer o loop interno do List Comprehension no passo 2 para transformar os textos em inteiros (int), você pode passar o map direto.

Se combinarmos o map na entrada e o List Comprehension no filtro, veja como o seu script inteiro ganharia um ar super profissional, compacto e minimalista, mantendo rigorosamente a mesma saída no terminal:

# 1 e 2. Entrada de dados e conversão imediata para lista de inteiros
entrada_numeros = input("Digite os números separados por espaço: ")
lista_completa = list(map(int, entrada_numeros.split()))

# 3. Filtragem "pythonica" de pares
numeros_pares = [num for num in lista_completa if num % 2 == 0]

# 4 e 5. Formatação elegante e saída
resultado_formatado = " ".join(map(str, numeros_pares))
print(f"Números pares: {resultado_formatado}")

Você está de parabéns por encarar esses desafios lógicos sequenciais com tanto capricho, documentando cada bloco com comentários precisos e explorando recursos nativos poderosos da linguagem. Continue firme nessa jornada fantástica com o Python!

Espero que possa ter lhe ajudado!