1
resposta

Filtrando números pares

numero = input("Digite os valores: ").split()
numeros_convertidos = list(map(int, numero))
numeros_pares = list(filter(lambda x: x % 2 == 0, numeros_convertidos))
print(f"Números pares: {numeros_pares}")
1 resposta

Olá, Luísa. Como vai?

Parabéns pela resolução do exercício! O seu código ficou excelente, muito compacto, elegante e totalmente funcional. Você utilizou recursos avançados e nativos do Python que desenvolvedores experientes adoram para manter o código limpo e performático.

Para enriquecer o seu post no fórum e ajudar os colegas que estão estudando funções a entenderem o que acontece em cada linha, vamos destrinchar as duas funções de alta ordem (Higher-Order Functions) e a função anônima que você usou com maestria:


Como seu código funciona nos bastidores

1. A captura dos dados: .split()

Ao usar o input().split(), você permitiu que o usuário digitasse vários números de uma vez só, separados por espaços (ex: 1 2 3 4 5). O .split() pegou essa linha de texto e a transformou em uma lista de strings: ['1', '2', '3', '4', '5'].

2. O mapeamento: map()

Como o Python lê tudo do teclado como texto (string), precisamos converter esses valores para números inteiros (int) antes de fazer cálculos.

  • A função map(int, numero) faz exatamente isso: ela aplica a função int() em cada um dos elementos da lista de forma automática, transformando-os em números de verdade.

3. A filtragem mágica: filter() e lambda

Aqui está o ponto mais alto do seu código! Em vez de criar um laço for tradicional e uma estrutura if com várias linhas para descobrir quem é par, você resolveu tudo em uma única linha usando uma função lambda (uma função anônima, sem nome, de linha única):

  • lambda x: x % 2 == 0: Esta função recebe um número x, divide por 2 e verifica se o resto é zero (critério para ser par). Se for verdadeiro, o número passa no teste.
  • filter(): Ela percorre a lista gerada pelo map e "filtra", mantendo apenas os elementos que retornaram True na função lambda.

Por fim, o list() envelopa o resultado do filtro de volta em uma lista prontinha para ser exibida no seu print().


Uma alternativa clássica: List Comprehension

O seu código usando map e filter é ótimo e muito performático. Na comunidade Python, existe uma outra forma de escrever essa mesmíssima lógica que é considerada muito "pythonica" pela sua legibilidade, chamada List Comprehension (Compreensão de Lista).

Se você quisesse fazer a conversão e a filtragem em passos super visuais, o código poderia ser escrito assim:

# Captura a entrada do usuário
valores_digitados = input("Digite os valores: ").split()

# Converte e filtra tudo em uma única estrutura compreensível
numeros_pares = [int(x) for x in valores_digitados if int(x) % 2 == 0]

print(f"Números pares: {numeros_pares}")

Ambas as abordagens chegam ao mesmo resultado final. Conhecer a combinação de map, filter e lambda como você demonstrou te dá uma base fantástica para trabalhar com manipulação de grandes volumes de dados e programação funcional. Continue compartilhando seus códigos com a comunidade!

Espero que possa ter lhe ajudado!