"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como usar funções Lambda em Python

Como usar funções Lambda em Python

Publicado em 15/11/2024
Navegar:211

How to Use Lambda Functions in Python

As funções Lambda em Python são uma maneira poderosa de criar funções pequenas e anônimas dinamicamente. Essas funções são normalmente usadas para operações curtas e simples, onde a sobrecarga de uma definição completa de função seria desnecessária.

Enquanto as funções tradicionais são definidas usando a palavra-chave def, as funções Lambda são definidas usando a palavra-chave lambda e são integradas diretamente nas linhas de código. Em particular, eles são frequentemente usados ​​como argumentos para funções integradas. Eles permitem que os desenvolvedores escrevam códigos limpos e legíveis, eliminando a necessidade de definições de funções temporárias.

Neste artigo, abordaremos o que as funções Lambda fazem e sua sintaxe. Também forneceremos alguns exemplos e práticas recomendadas para usá-los e discutiremos seus prós e contras.

Pré-requisitos

As funções Lambda fazem parte do Python desde a versão 2.0, então você precisará de:

  • Versão mínima do Python: 2.0.
  • Versão recomendada do Python: 3.10 ou posterior.

Neste tutorial, veremos como usar funções Lambda com a biblioteca Pandas: uma biblioteca de análise e manipulação de dados de código aberto rápida, poderosa, flexível e fácil de usar. Se você não o tiver instalado, execute o seguinte:

pip install pandas

Sintaxe e noções básicas de funções Lambda para Python

Primeiro, vamos definir a sintaxe que os desenvolvedores devem usar para criar funções Lambda.

Uma função Lambda é definida usando a palavra-chave lambda, seguida por um ou mais argumentos e uma expressão:

lambda arguments: expression

Vamos imaginar que queremos criar uma função Lambda que some dois números:

add = lambda x, y: x   y

Execute o seguinte:

result = add(3, 5)
print(result)

Isso resulta em:

8

Criamos uma função anônima que recebe dois argumentos, x e y. Ao contrário das funções tradicionais, as funções Lambda não têm nome: é por isso que dizemos que são "anônimas".

Além disso, não usamos a instrução return, como fazemos em funções regulares do Python. Portanto, podemos usar a função Lambda à vontade: ela pode ser impressa (como fizemos neste caso), armazenada em uma variável, etc.

Agora vamos ver alguns casos de uso comuns para funções Lambda.

Casos de uso comuns para funções Lambda

As funções Lambda são particularmente usadas em situações em que precisamos de uma função temporariamente simples. Em particular, eles são comumente usados ​​como argumentos para funções de ordem superior.

Vejamos alguns exemplos práticos.

Usando funções Lambda com a função map()

map() é uma função integrada que aplica uma determinada função a cada item de um iterável e retorna um objeto de mapa com os resultados.

Por exemplo, digamos que queremos calcular as raízes quadradas de cada número em uma lista. Poderíamos usar uma função Lambda assim:

# Define the list of numbers
numbers = [1, 2, 3, 4]

# Calculate square values and print results
squared = list(map(lambda x: x ** 2, numbers))
print(squared)

Isso resulta em:

[1, 4, 9, 16]

Agora temos uma lista contendo as raízes quadradas dos números iniciais.

Como podemos ver, isso simplifica muito os processos para usar funções em tempo real que não precisam ser reutilizadas posteriormente.

Usando funções Lambda com a função filter()

Agora, suponha que temos uma lista de números e queremos filtrar números pares.

Podemos usar uma função Lambda da seguinte maneira:

# Create a list of numbers
numbers = [1, 2, 3, 4]

# Filter for even numbers and print results
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even)

Isso resulta em:

[2,4]

Usando funções Lambda com a função sorted()

A função sorted() em Python retorna uma nova lista ordenada dos elementos de qualquer iterável. Usando funções Lambda, podemos aplicar critérios de filtragem específicos a essas listas.

Por exemplo, suponha que temos uma lista de pontos em duas dimensões: (x,y). Queremos criar uma lista que ordene os valores de y de forma incremental.

Podemos fazer assim:

# Creates a list of points
points = [(1, 2), (3, 1), (5, -1)]

# Sort the points and print
points_sorted = sorted(points, key=lambda point: point[1])
print(points_sorted)

E obtemos:

[(5, -1), (3, 1), (1, 2)]

Usando funções Lambda em compreensões de lista

Devido à sua concisão, as funções Lambda podem ser incorporadas em compreensões de lista para cálculos instantâneos.

Suponha que temos uma lista de números. Queremos:

  • Iterar toda a lista
  • Calcule e imprima o dobro dos valores iniciais.

Veja como podemos fazer isso:

# Create a list of numbers
numbers = [1, 2, 3, 4]

# Calculate and print the double of each one
squared = [(lambda x: x ** 2)(x) for x in numbers]
print(squared)

E obtemos:

[1, 4, 9, 16]

Vantagens de usar funções Lambda

Dados os exemplos que exploramos, vamos examinar algumas vantagens do uso de funções Lambda:

  • Concisão e legibilidade onde a lógica é simples: As funções Lambda permitem código conciso, reduzindo a necessidade de definições de funções padrão. Isso melhora a legibilidade nos casos em que a lógica da função é simples.
  • Recursos aprimorados de programação funcional: as funções Lambda se alinham bem com os princípios de programação funcional, permitindo construções funcionais em código Python. Em particular, eles facilitam o uso de funções de ordem superior e a aplicação de funções como objetos de primeira classe.
  • Quando e por que preferir funções Lambda: As funções Lambda são particularmente vantajosas ao definir funções curtas e "descartáveis" que não precisam ser reutilizadas em outro lugar no código. Portanto, eles são ideais para uso in-line, como argumentos para funções de ordem superior.

Limitações e desvantagens

Vamos discutir brevemente algumas limitações e desvantagens das funções Lambda em Python:

  • Desafios de legibilidade em expressões complexas: embora as funções Lambda sejam concisas, elas podem se tornar difíceis de ler e entender quando usadas para expressões complexas. Isso pode levar a um código mais difícil de manter e depurar.
  • Limitações no tratamento de erros e depuração: como as funções Lambda podem conter apenas uma única expressão, elas não podem incluir instruções, como o bloco try-except para tratamento de erros. Essa limitação os torna inadequados para operações complexas que exigem esses recursos.
  • Funcionalidade restrita: como as funções Lambda podem conter apenas uma única expressão, elas são menos versáteis que as funções padrão. Esta restrição de design limita seu uso a operações e transformações simples.

Melhores práticas para usar funções Lambda

Agora que consideramos alguns prós e contras, vamos definir algumas práticas recomendadas para usar funções Lambda de maneira eficaz:

  • Mantenha-as simples: para manter a legibilidade e a simplicidade, as funções Lambda devem ser curtas e limitadas a operações diretas. Funções com lógica complexa devem ser refatoradas em funções padrão.
  • Evite o uso excessivo: embora as funções do Lambda sejam convenientes para diversas situações, o uso excessivo delas pode levar a um código difícil de ler e manter. Use-os criteriosamente e opte por funções padrão quando a clareza for fundamental.
  • Combine funções Lambda com outros recursos do Python: Como vimos, as funções Lambda podem ser efetivamente combinadas com outros recursos do Python, como compreensões de lista e funções de ordem superior. Isso pode resultar em um código mais expressivo e conciso quando usado adequadamente.

Técnicas Avançadas com Funções Lambda

Em certos casos, técnicas mais avançadas de função Lambda podem ser úteis.

Vejamos alguns exemplos.

Funções Lambda aninhadas

As funções Lambda podem ser aninhadas para operações complexas.

Essa técnica é útil em cenários onde você precisa ter várias pequenas transformações em uma sequência.

Por exemplo, suponha que você queira criar uma função que calcule a raiz quadrada de um número e depois adicione 1. Veja como você pode usar funções Lambda para fazer isso:

# Create a nested lambda function
nested_lambda = lambda x: (lambda y: y ** 2)(x)   1

# Print the result for the value 3
print(nested_lambda(3))

Você obtém:

10

Integração com bibliotecas Python para funcionalidade avançada

Muitas bibliotecas Python aproveitam funções Lambda para simplificar tarefas complexas de processamento de dados.

Por exemplo, funções Lambda podem ser usadas com Pandas e NumPy para simplificar a manipulação e transformação de dados.

Suponha que temos um quadro de dados com duas colunas. Queremos criar outra coluna que seja a soma das outras duas. Nesse caso, podemos usar funções Lambda da seguinte forma:

# Create the columns' data
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}

# Create data frame
df = pd.DataFrame(data)

# Create row C as A B and print the dataframe
df['C'] = df.apply(lambda row: row['A']   row['B'], axis=1)
print(df)

E obtemos:

   A  B  C
0  1  4  5
1  2  5  7
2  3  6  9

É isso o nosso tour rápido pelas funções Lambda em Python!

Concluindo

Neste artigo, vimos como usar funções Lambda em Python, exploramos seus prós e contras, algumas práticas recomendadas e abordamos alguns casos de uso avançados.

Boa codificação!

P.S. Se você quiser ler as postagens sobre Python assim que forem publicadas, assine nosso boletim informativo Python Wizardry e nunca perca uma única postagem!

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/appsignal/how-to-use-lambda-functions-in-python-3llj?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3