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}")
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}")
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:
.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'].
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.
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.filter() e lambdaAqui 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().
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!