O QUE É O LAMBDA NO PYTHON?

Funções lambda são funções anônimas no Python que são definidas em uma única linha de código.

O Python é uma linguagem de programação de alto nível, que suporta programação orientada a objetos, funcional e imperativa. Uma das características mais interessantes do Python é a possibilidade de utilizar funções lambda. As funções lambda são funções anônimas que não possuem um nome definido, e são geralmente utilizadas como parâmetros de outras funções. Neste artigo, vamos explicar o que são as funções lambda no Python, os tipos existentes e como utilizá-las em códigos.

Tipos de Lambda no Python

Lambda com um único argumento

Lambda com um único argumento é uma forma muito simples de criar uma função anônima no Python. Como o nome sugere, ela permite que você defina uma função que tenha apenas um argumento. A sintaxe para definir uma função lambda com um único argumento é a seguinte:

lambda argumento: expressão

Onde “argumento” é o nome do argumento passado para a função e “expressão” é a expressão que será executada pela função. A função retornará o resultado da expressão.

Por exemplo, se você quiser criar uma função que adicione 10 a um número, você pode usar a seguinte função lambda:

x = lambda a: a + 10

Neste exemplo, “a” é o argumento passado para a função e “a + 10” é a expressão que será executada. O resultado da expressão será retornado pela função.

Você pode chamar essa função lambda como faria com qualquer outra função. Por exemplo:

print(x(5))

Resultado:

Este código irá imprimir o resultado da expressão “5 + 10“, que é 15.

15

É importante lembrar que a expressão em uma função lambda deve estar em uma única linha. Se você precisar de mais de uma linha de código, pode usar parênteses para agrupar o código:

x = lambda a: (
    a + 10,
    a - 10
)

Neste exemplo, a função lambda retorna uma tupla com dois valores:

(15, -5)

As funções lambda com um único argumento são muito úteis quando você precisa passar uma função simples como argumento para outra função. Por exemplo, se você quiser filtrar uma lista de números para obter apenas os números pares, você pode usar a função filter e uma função lambda com um único argumento:

numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

pares = list(filter(lambda x: x % 2 == 0, numeros))

print(pares)

Neste exemplo, a função filter é usada para filtrar a lista “numeros” e retornar apenas os números pares. A função lambda com um único argumento é usada para verificar se cada número é par ou não. Se o número for par, a expressão “x % 2 == 0” retornará True e o número será incluído na lista “pares“. Se o número for ímpar, a expressão retornará False e o número será excluído da lista.

Resultado:

[2, 4, 6, 8, 10]

Em resumo, as funções lambda com um único argumento são uma forma simples e útil de criar funções anônimas no Python. Elas são especialmente úteis quando você precisa passar uma função simples como argumento para outra função.

Lambda com múltiplos argumentos

As funções lambda também podem ter múltiplos argumentos, permitindo que você crie funções mais complexas com sintaxe mais simples e sucinta. A sintaxe para definir uma função lambda com múltiplos argumentos é a seguinte:

lambda argumento1, argumento2, ...: expressão

Onde “argumento1, argumento2, …” são os nomes dos argumentos que serão passados para a função e “expressão” é a expressão que será executada pela função. A função retornará o resultado da expressão.

Por exemplo, se você quiser criar uma função que some dois números, você pode usar a seguinte função lambda:

soma = lambda x, y: x + y

Neste exemplo, “x” e “y” são os dois argumentos que serão passados para a função e “x + y” é a expressão que será executada. O resultado da expressão será retornado pela função.

Você pode chamar essa função lambda como faria com qualquer outra função. Por exemplo:

print(soma(2, 3))

Resultado:

5

Além disso, as funções lambda com múltiplos argumentos podem ser usadas em conjunto com outras funções de ordem superior, como map, reduce e filter. Por exemplo, se você quiser multiplicar todos os números em uma lista por um fator constante, você pode usar a função map e uma função lambda com dois argumentos:

numeros = [1, 2, 3, 4, 5]
fator = 2

resultados = list(map(lambda x, fator: x * fator, numeros, [fator]*len(numeros)))

print(resultados)

Neste exemplo, a função map é usada para aplicar a função lambda a cada elemento da lista “numeros“. A função lambda com dois argumentos é usada para multiplicar cada número pelo fator constante. Note que a lista [fator]*len(numeros) é usada para criar uma lista de tamanho igual a “numeros” que contém apenas o valor “fator“. Isso é necessário porque a função map espera que cada função lambda tenha o mesmo número de argumentos que a lista de entrada.

Resultado:

[2, 4, 6, 8, 10]

As funções lambda com múltiplos argumentos também podem ter valores padrão para seus argumentos, como qualquer outra função em Python. Por exemplo:

soma_com_padrao = lambda x, y=1: x + y

print(soma_com_padrao(x=5))

Neste exemplo, “x” é um argumento obrigatório e “y” tem um valor padrão de 1. Isso significa que, se você chamar a função com apenas um argumento, o valor padrão de “y” será usado. Se você chamar a função com dois argumentos, o segundo argumento irá substituir o valor padrão.

Resultado:

6

Lambda com expressões condicionais

As funções lambda em Python também podem ter expressões condicionais, o que significa que você pode especificar uma condição que a expressão deve atender antes de ser executada. A sintaxe para definir uma função lambda com uma expressão condicional é a seguinte:

lambda argumento: expressão1 if condição else expressão2

Onde “argumento” é o argumento que será passado para a função, “condição” é a condição que a expressão deve atender e “expressão1” e “expressão2” são as expressões que serão executadas dependendo se a condição for True ou False, respectivamente. A função retornará o resultado da expressão correspondente.

Por exemplo, se você quiser criar uma função lambda que retorne o dobro de um número se ele for par e o triplo se for ímpar, você pode usar a seguinte função lambda:

doble_o_triple = lambda x: x * 2 if x % 2 == 0 else x * 3

print(doble_o_triple(4))
print(doble_o_triple(5))

Neste exemplo, a expressão condicional “x % 2 == 0” verifica se o número é par. Se for, a expressão “x * 2” será executada e o resultado será retornado. Se não for, a expressão “x * 3” será executada e o resultado será retornado.

Você pode chamar essa função lambda como faria com qualquer outra função. Por exemplo:

8
15

Este código irá imprimir o resultado da expressão “4 * 2“, que é 8, e o resultado da expressão “5 * 3“, que é 15.

Além disso, as funções lambda com expressões condicionais podem ser usadas em conjunto com outras funções de ordem superior, como map, reduce e filter. Por exemplo, se você quiser filtrar uma lista de números para incluir apenas os pares, você pode usar a função filter e uma função lambda com uma expressão condicional:

numeros = [1, 2, 3, 4, 5]
pares = list(filter(lambda x: x % 2 == 0, numeros))

print(pares)

Neste exemplo, a função filter é usada para filtrar os números na lista “numeros“. A função lambda com a expressão condicional “x % 2 == 0” é usada para verificar se cada número é par. Se for, o número será incluído na lista de pares. Se não for, o número será descartado.

Resultado:

[2, 4]

As funções lambda com expressões condicionais também podem ser aninhadas para criar expressões mais complexas. Por exemplo, se você quiser criar uma função lambda que retorna o quadrado de um número se ele for positivo e a raiz quadrada se for negativo, você pode usar a seguinte função lambda:

quadrado_o_raiz = lambda x: (lambda y: y * y)(x) if x > 0 else (lambda z: z ** 0.5)(x)

print(quadrado_o_raiz(4))
print(quadrado_o_raiz(-9))

Neste exemplo, duas funções lambda estão aninhadas. A primeira função lambda com o argumento “y” retorna o quadrado do argumento. A segunda função lambda com o argumento “z” retorna a raiz quadrada do argumento. A função lambda principal com o argumento “x” usa a expressão condicional “x > 0” para determinar qual das funções lambda aninhadas deve ser executada. Se o argumento “x” for positivo, a primeira função lambda será executada e o resultado será o quadrado do argumento. Se o argumento “x” for negativo, a segunda função lambda será executada e o resultado será a raiz quadrada do argumento.

print(quadrado_o_raiz(4))
print(quadrado_o_raiz(-9))

Resultado:

Este código irá imprimir o resultado da expressão “4 * 4”, que é 16, e o resultado da expressão “(-9) ** 0.5”, que é 3.

16
(1.8369701987210297e-16+3j)

Em resumo, as funções lambda com expressões condicionais são uma forma útil de criar funções simples e expressivas em Python. Elas permitem que você especifique uma condição que a expressão deve atender antes de ser executada, o que pode ser útil em muitas situações. Combinado com outras funções de ordem superior, como map, reduce e filter, as funções lambda com expressões condicionais podem ser usadas para manipular listas de maneira poderosa e expressiva.

Conclusões sobre o Lambda do Python

As funções lambda são uma característica poderosa do Python, que permitem que você crie funções anônimas em uma única linha de código. Existem três tipos diferentes de funções lambda no Python: lambda com um único argumento, lambda com múltiplos argumentos e lambda com expressões condicionais. Cada tipo de lambda é útil em diferentes situações, e é importante entender como eles funcionam para tirar o máximo proveito deles em seus códigos Python.

Referências:

Políticas de privacidade

Este site usa cookies para que possamos fornecer a melhor experiência de usuário possível. As informações de cookies são armazenadas em seu navegador e executam funções como reconhecê-lo quando você retorna ao nosso site e ajudar nossa equipe a entender quais seções do site você considera mais interessantes e úteis.