Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Faça como eu fiz: filtrando números pares

lista_numeros = input('Digite os números separados por espaço: ')
lista_numeros = lista_numeros.split() #lista de strings separa e converte pra lista de string
lista_numeros = map(int, lista_numeros) #converte a lista de string para lista de int 
lista_pares = list(filter(lambda x: x % 2 == 0, lista_numeros)) #filtra os numeros pares
print(f'Números pares:', ' '.join(map(str, lista_pares))) # converte pra string cada valor e adiciona espaço
2 respostas
solução!

Olá, Marcelo. Como vai?

Excelente código! Sua solução para filtrar números pares em Python ficou extremamente elegante e utiliza conceitos avançados de programação funcional que são muito valorizados no mercado, como as funções map(), filter() e expressões lambda.

O fluxo de transformação que você criou na sua pipeline de dados está logicamente perfeito: você recebe o texto, quebra em partes, converte para inteiros, aplica o filtro matemático e, por fim, reconverte para texto para exibir formatado na tela.

Para agregar ainda mais valor ao seu projeto, vamos analisar de perto como a combinação de filter() e lambda funciona na memória do Python e discutir uma alternativa de escrita que é considerada uma das maiores boas práticas da linguagem.

O Funcionamento da Pipeline de Dados

O comportamento do seu código pode ser visualizado como uma esteira de processamento, onde os dados entram brutos e saem refinados:

  1. split(): Transforma a string "1 2 3 4" na lista de strings ['1', '2', '3', '4'].
  2. map(int, ...): Transforma os textos em números internos 1, 2, 3, 4.
  3. filter(lambda x: x % 2 == 0, ...): Avalia cada número através do operador de resto da divisão %. Se o resto da divisão por 2 for igual a zero, a condição é True e o número passa pelo filtro; se for diferente, ele é descartado.

Sugestão de Boa Prática: List Comprehensions

Embora o uso de map() e filter() seja excelente e muito comum em linguagens como JavaScript ou lógicas funcionais pura, a comunidade Python prefere, na grande maioria das vezes, o uso de List Comprehensions (Compreensão de Listas).

A List Comprehension faz exatamente a mesma coisa que o map e o filter juntos, mas possui uma sintaxe muito mais legível e costuma ser até mais rápida nativamente no Python. Veja como você poderia reescrever a linha do filtro de forma super "pythônica":

# Converte e filtra em uma única linha visualmente limpa
lista_pares = [int(x) for x in lista_numeros.split() if int(x) % 2 == 0]

Deixando o código completo e robusto

Se combinarmos a sua lógica com um tratamento de erros básico (caso o usuário digite uma letra por engano no meio dos números), seu script fica totalmente protegido e pronto para produção:

entrada = input('Digite os números separados por espaço: ')

try:
    # Usando list comprehension com validação direta
    lista_pares = [int(x) for x in entrada.split() if int(x) % 2 == 0]
    
    # Exibindo o resultado formatado
    print('Números pares:', ' '.join(map(str, lista_pares)))

except ValueError:
    print('Erro: Certifique-se de digitar apenas números inteiros separados por espaço.')

Seu domínio sobre funções de ordem superior (higher-order functions) no Python está excelente, Marcelo. Continue compartilhando suas soluções no fórum!

Espero que possa ter lhe ajudado!

Isso é verdade poderia ter sido feito com list Comprehension, mas o exercício pedia explicitamente pra usar funnção filter(). Value demais o feedback Evandro.