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

[Dúvida] Praticando Python - Filtrando números pares

Tive uma dificuldade ao resolver porque o print sempre estava me retornando esse código:

<filter object at 0x0171DBF0>

Tentei resolver por conta mas não tinha realmente entendido onde estava errando. Tive ajuda da 'Luri' pra poder me dar as dicas de onde estava errado
e finalmente resolvi:

numeros = input('Digite os números separados por espaço: ').split()
def filtro_numero_par(lista):
    lista_filtrada = list(filter(lambda x: int(x) % 2 == 0, lista))
    return lista_filtrada

print(f'Os numeros pares são:', ' '.join(filtro_numero_par(numeros)))

Mas mesmo pedindo pra 'Luri' me explicar não entendi o porque do retorno do erro do print ser esse. Alguem conseguiria me esclarecer um pouco mais sobre ?

2 respostas
solução!

Olá, Vitor, como vai?

A sua solução final está correta e atende bem ao que o exercício propõe. O uso do filter com lambda, a conversão para inteiro e a formatação da saída estão alinhados com o objetivo da atividade. Obrigado por compartilhar o código e o contexto da dúvida.

Sobre o retorno <filter object at ..., isso acontece porque a função filter não devolve imediatamente uma lista com os valores filtrados. Em Python, filter retorna um objeto iterável, que funciona como um gerador. Quando esse objeto é exibido diretamente com print, o Python mostra apenas a referência de memória, pois os valores ainda não foram materializados. Ao converter esse iterável para list, você força a avaliação dos dados, tornando possível visualizar e manipular os valores filtrados.

Esse comportamento é comum em funções que trabalham com iteração preguiçosa (Lazy Evaluation), como filter, map e zip. Elas economizam memória e processamento, mas exigem conversão quando você precisa acessar os dados diretamente ou exibi-los.

Espero ter ajudado.

Siga firme nos seus estudos e conte com o fórum sempre que precisar.

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Muito obrigado Mike!!