Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Dúvida função lambda com filter ou map

Eu entendi que função lambda é um modo mais rápido de criar uma função já dentro do código, e que posso chamar essa função a qualquer momento. Mas isso não é o caso quando uso uma função map, ou lambda, correto?

Por exemplo essa resolução alternativa do desafio da aula 2 de Python para Data Science que fiz:


Questão 3

Crie a função que leia a lista abaixo e retorne uma nova lista com os múltiplos de 3:

[97, 80, 94, 88, 80, 1, 16, 53, 62, 32, 24, 99]

Utilize o return na função e salve a nova lista na variável mult_3.

lista = [97, 80, 94, 88, 80, 1, 16, 53, 62, 32, 24, 99]

mult_3 = list(filter(lambda x: x != None,map(lambda x: x if x % 3 == 0 else None,lista)))

print(f'Os múltiplos de 3 na lista informada: {mult_3}')

Eu não conseguiria chamar para utilizar em uma nova lista de números, correto?

1 resposta
solução!

Ei, Paulo Ricardo! Tudo bem?

Isso mesmo. A função lambda utilizada com map e filter está diretamente vinculada ao processamento daquela lista, sendo anônima e não reutilizável. Para repetir esse comportamento, é necessário encapsular a lógica em uma função convencional.

Por exemplo:

def multiplos_de_tres(lista):
    return list(filter(lambda x: x is not None, map(lambda x: x if x % 3 == 0 else None, lista)))

nova_lista = [9, 22, 45, 60, 17, 81]
resultado = multiplos_de_tres(nova_lista)

print(f'Os múltiplos de 3 são: {resultado}')

Espero ter ajudado e qualquer dúvida, conte com a gente por aqui.

Até mais, Paulo Ricardo!

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