Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

filtrando números pares

Nessa questão eu passei pelo mesmo. A versão do professor possuia uma puta simplificação, a qual eu achei bastante complexa para que eu pudesse executar, por isso decidi fazê-la de uma forma onde eu pudesse ver cada detalhe ser executado. Também passei um bom tempo avaliando aquilo que o prof havia feito na questão

lista_numeros = '1 2 3 4 5 6 7'

def pares(numeros):
    num = []

    for numero in numeros.split():
        n = int(numero)
        num.append(n)

    return num

def my_filter(num):
    if num % 2 == 0:
        return True
    else:
        return False

resultado = pares(lista_numeros)
n_pares = list(filter(my_filter, resultado))
print(f'Os números pares são {n_pares}')
1 resposta

Oi, Nathã. Tudo bem com você?

Sua abordagem para resolver o problema de filtrar números pares é bem interessante. Você preferiu expandir o que a instrutora compactou, e isso é uma decisão legítima quando você quer entender cada detalhe da execução. Quebrar a lógica em funções separadas e ver o fluxo passo a passo é uma estratégia válida de aprendizado, especialmente quando você ainda está construindo confiança com conceitos como filter e lambda.

Seu código funciona corretamente e cumpre o objetivo. A função pares transforma a string em uma lista de inteiros, e minha_filter valida se cada número é par. O uso de filter com essa função customizada deixa bem explícito o que está acontecendo, diferente do lambda que compacta tudo em uma linha. Uma dica interessante: você pode simplificar a função minha_filter removendo o else, já que você pode retornar diretamente o resultado da comparação. Algo como return num % 2 == 0 faz a mesma coisa e fica mais conciso.

Conforme você ganhar experiência, usar lambda vai ficando mais natural. A razão pela qual a instrutora utilizou é justamente porque filter espera uma função que retorna True ou False, e lambda é perfeita para funções pequenas e de uso único. No seu caso, comparar suas duas soluções é exatamente o exercício proposto, então você está no caminho certo. Com o tempo, você verá que aquela "complexidade" da instrutora vira algo muito mais simples de ler.

Como você se sente agora sobre a abordagem com lambda depois de ter desenvolvido sua versão mais detalhada?

Parabéns por ter dedicado tempo a entender o conceito profundamente e por compartilhar sua solução no fórum. Continue compartilhando suas implementações, pois isso enriquece a discussão e ajuda os colegas a verem diferentes perspectivas.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!