Manual

do

Maker

.

com

Lambda em Python

Lambda em Python

O filho de um querido amigo começou agora a aprender Python. Apesar de estar no início e ainda há todo um caminho pela frente, me dá comichão ver algo que pode ficar mais elegante disposto de uma maneira longe do ideal. Orgulhosamente, tenho dado algumas dicas a ele e resolvi dispor uma introdução "bem" básica sobre lambda em Python.

lambda em C++

Se está procurando por funções lambda em C++, já escrevi alguns artigos sobre o tema.

Funções lambda em C++

Já escrevi algo mais simples ainda, usando lambda em MicroPython. Nesse artigo continua sendo introdutório, mas com um exemplo de melhoria real.

Tabuada usando função lambda em Python

Basicamente, a tarefa era pegar uma entrada do usuário pelo console, com input, que seria o número a aplicar a tabuada. Em PC, utilizamos:

n = input('Digite um numero: ')

E então fazemos a operação. Sem a utilização de laços, o Eric fez assim, inicialmente:

SAVE_20220830_204318-1024x46.jpg

E foi apenas até o 6. Daí ele me perguntou se havia uma forma de deixar "visualmente mais limpo". Bem, consideremos que não é apenas uma questão de deixar limpo; como está, o código é inflexível. E se quiséssemos a tabuada de 1 à 100? Então exemplifiquei com lambda e discorri sobre os recursos utilizados, dispostos nesse outro artigo de lambda com Python.

Repare que no código do Eric, ele converteu imediatamente a entrada do usuário para int, para que pudesse ser tratado como número ao fazer a operação. Volto nesse tema mais adiante.

Em substituição à segunda linha de código, minha sugestão foi o uso de lambda, desse modo:

resultado = list(map(lambda x: x*n,list(range(1,11))))

Lembrando que n é a entrada do usuário. Executando dentro do bpython, invés de pegar a entrada do usuário, criei uma variável para testar, como se fosse entrada do usuário:

lambda-python.jpg

Quando a lambda retorna mais de um valor, usamos a função map. Então usamos a lista:

list(map(lambda))

Range

Invés de escrever cada um dos multiplicadores da tabuada, usamos a função range. Se fizermos:

range(10)

O resultado será números de 0 à 9. Para iniciar em 1 e terminar em 10, usamos:

range(1,11)

A condição da lambda foi chamada de x. Para cada item da lista gerada por range, x é multiplicado pelo item e ao final é retornada a lista de resultados. Entendendo o conceito, a operação fica muito mais simples, certo?

Essa não é a única forma de se usar lambda em Python. Mesmo que não saiba inglês, tem um site que é uma excelente referência em Python e tem algumas variações do uso de lambda. Dê uma conferida nos exemplos. Inicialmente é difícil imaginar seu uso sem uma aplicação em vista, mas considerando o exemplo prático desse artigo, provavelmente fará mais sentido agora.

Entrada do usuário em Python

Programar para microcontroladores é muito menos problemático que interagir com seres humanos. No exemplo, é esperado veementemente que o usuário entrará com um número. E se ele inserir uma letra? - Nesse caso, é bom garantir que a entrada do usuário foi correta:

import sys
n = input('Digite um numero: ')
if type(n) is str: #vindo por input, sempre será
    if n.isdigit():
        resultado = list(map(lambda x: x*int(n),list(range(1,11))))
    else:
        print("Entre com um valor numerico! Saindo...")
        sys.exit(0)

print("Resultado da tabuada:")
print(resultado)

Assim garantimos que não estamos multiplicando um caractere invés de um número.

Nesse artigo ficamos apenas nisso, mas se quiser ver mais, tem o meu artigo usando lambda no MicroPython, citado lá em cima, além do artigo em inglês que sugeri.

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.