Como usar funções Lambda em Python [com exemplos]
Publicados: 2022-11-10Neste tutorial, você aprenderá tudo sobre funções lambda em Python – desde a sintaxe para definir funções lambda até os diferentes casos de uso com exemplos de código.
Em Python, lambdas são funções anônimas que têm uma sintaxe concisa e podem ser usadas com outras funções internas úteis. No final deste tutorial, você terá aprendido como definir funções lambda e quando deve considerar usá-las em vez de funções regulares do Python.
Vamos começar!
Função do Python Lambda: sintaxe e exemplos
Aqui está a sintaxe geral para definir uma função lambda em Python:
lambda parameter(s):return value
Na sintaxe geral acima:
- lambda é a palavra-chave que você deve usar para definir uma função lambda, seguida por um ou mais parâmetros que a função deve ter.
- Há dois pontos separando os parâmetros e o valor de retorno .
Ao definir uma função lambda, você deve garantir que o valor de retorno seja calculado avaliando uma expressão que abrange uma única linha de código. Você entenderá isso melhor quando codificarmos exemplos.
Exemplos de funções do Python Lambda
A melhor maneira de entender as funções lambda é começar reescrevendo as funções regulares do Python como funções lambda.
Você pode codificar em um Python REPL ou no editor Python online da Geekflare.
#1 . Considere a seguinte função square()
, que recebe um número, num
, como argumento e retorna o quadrado do número.
def square(num): return num*num
Você pode chamar a função com argumentos e verificar se está funcionando corretamente.
>>> square(9) 81 >>> square(12) 144
Você pode atribuir essa expressão lambda a um nome de variável, digamos, square1
para tornar a definição da função mais concisa: square1 = lambda num: num*num
e, em seguida, chamar a função square1
com qualquer número como argumento. No entanto, sabemos que lambdas são funções anônimas, portanto, evite atribuí-las a uma variável.
Para a função square()
, o parâmetro é num
e o valor de retorno é num*num
. Depois de identificá-los, podemos conectá-los à expressão lambda e chamá-la com um argumento, conforme mostrado:
>>> (lambda num: num*num)(2) 4
Este é o conceito de Expressão de Função Invocada Imediatamente, onde chamamos uma função logo após defini-la.
#2 . Em seguida, vamos reescrever outra função simples add()
que leva em números, num1
e num2
, e retorna sua soma, num1 + num2
.
def add(num1,num2): return num1 + num2
Vamos chamar a função add()
com dois números como argumentos:
>>> add(4,3) 7 >>> add(12,5) 17 >>> add(12,6) 18
Nesse caso, num1
e num2
são os dois parâmetros e o valor de retorno é num1 + num2
.
>>> (lambda num1, num2: num1 + num2)(3,7) 10
As funções do Python também podem receber valores padrão para parâmetros. Vamos modificar a definição da função add()
e definir o valor padrão do parâmetro num2
para 10.
def add(num1, num2=10): return num1 + num2
Nas seguintes chamadas de função:
- Na primeira chamada de função, o valor de
num1
é 1 e o valor denum2
é 3. Quando você passa o valor denum2
na chamada de função, esse valor é usado; a função retorna 4.
- No entanto, se você passar apenas um argumento (
num1
é 7), o valor padrão de 10 será usado paranum2
; a função retorna 17.
>>> add(1,3) 4 >>> add(7) 17
Ao escrever funções que aceitam valores padrão para determinados parâmetros como expressões lambda, você pode especificar o valor padrão ao definir os parâmetros.
>>> (lambda num1, num2 = 10: num1 + num2)(1) 11
Quando você deve usar funções Lambda em Python?
Agora que você aprendeu o básico das funções lambda em Python, aqui estão alguns casos de uso:
- Quando você tem uma função cuja expressão de retorno é uma única linha de código e não precisa fazer referência à função em outro lugar no mesmo módulo, pode usar funções lambda. Também codificamos alguns exemplos para entender isso.
- Você pode usar funções lambda ao usar funções internas, como map(), filter() e reduce().
- As funções do Lambda podem ser úteis na classificação de estruturas de dados do Python, como listas e dicionários.
Como usar o Python Lambda com funções internas
1. Usando Lambda com map()
A função map()
recebe um iterável e uma função e aplica a função a cada item no iterável, conforme mostrado:

Vamos criar uma lista nums
e usar a função map()
para criar uma nova lista que contém o quadrado de cada número na lista nums
. Observe o uso da função lambda para definir a operação de quadratura.
>>> nums = [4,5,6,9] >>> list(map(lambda num:num*num,nums)) [16, 25, 36, 81]
Como a função map()
retorna um objeto de mapa, devemos convertê-lo em uma lista.
️ Confira este tutorial sobre a função map() em Python.
2. Usando Lambda com filtro()
Vamos definir nums
, uma lista de números:
>>> nums = [4,5,6,9]
Suponha que você queira filtrar essa lista e reter apenas os números ímpares.
Você pode usar a função filter()
integrada do Python.
A função filter()
recebe uma condição e um iterable : filter(condition, iterable)
. O resultado contém apenas os elementos no iterável original que satisfazem a condição. Você pode converter o objeto retornado em um iterável do Python, como list.

Para filtrar todos os números pares, reteremos apenas os números ímpares. Portanto, a expressão lambda deve ser lambda num: num%2!=0
. A quantidade num%2
é o resto quando num
é dividido por 2.
-
num%2!=0
éTrue
sempre quenum
for ímpar, e -
num%2!=0
éFalse
sempre quenum
for par.
>>> nums = [4,5,6,9] >>> list(filter(lambda num:num%2!=0,nums)) [5, 9]
3. Usando Lambda com reduce()
A função reduce()
recebe um iterável e uma função. Ele reduz o iterável aplicando a função iterativamente nos itens do iterável.


Para usar a função reduce()
, você terá que importá-la do módulo functools
integrado do Python:
>>> from functools import reduce
Vamos usar a função reduce()
para calcular a soma de todos os números na lista nums
. Definimos uma expressão lambda: lambda num1,num2:num1+num2
, como a função de soma redutora.
A operação de redução ocorrerá assim: f(f(f(4,5),6),9) = f(f(9,6),9) = f(15,9) = 24. Aqui, f é a operação de soma em dois itens da lista, definida pela função lambda.
>>> from functools import reduce >>> nums = [4,5,6,9] >>> reduce(lambda num1,num2:num1+num2,nums) 24
Funções do Python Lambda para personalizar a classificação
Além de usar funções lambda com funções internas do Python, como map()
, filter()
e reduce()
, você também pode usá-las para personalizar funções internas e métodos usados para classificação.

1. Classificando listas do Python
Ao trabalhar com listas do Python, muitas vezes você terá que classificá-las com base em determinados critérios de classificação. Para classificar as listas do Python no local, você pode usar o método sort()
embutido nelas. Se você precisar de uma cópia ordenada da lista, você pode usar a função sorted()
.
A sintaxe para usar a função
sorted()
do Python ésorted(iterable, key=...,reverse= True | False)
.
– O parâmetrokey
é usado para personalizar a classificação.
– O parâmetroreverse
pode ser definido comoTrue
ouFalse
; o valor padrão éFalse
.
Ao classificar listas de números e strings, a classificação padrão é em ordem crescente e alfabética, respectivamente. No entanto, às vezes você pode querer definir algum critério personalizado para classificação.
Considere as seguintes fruits
da lista. Suponha que você queira obter uma cópia ordenada da lista. Você deve classificar as strings de acordo com o número de ocorrências de 'p' nelas – em ordem decrescente.
>>> fruits = ['apple','pineapple','grapes','mango']
É hora de usar o parâmetro de key
opcional. Uma string é iterável em Python e para obter o número de ocorrências de um caractere nela, você pode usar o método .count()
. Então definimos a key
para lambda x:x.count('p')
para que a classificação seja baseada no número de vezes que 'p' ocorre na string.
>>> fruits = ['apple','pineapple','grapes','mango'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['pineapple', 'apple', 'grapes', 'mango']
Neste exemplo:
- A
key
para classificar é o número de ocorrências do caractere 'p' e é definido como uma expressão lambda. - Como configuramos o parâmetro
reverse
paraTrue
, a classificação ocorre na ordem decrescente do número de ocorrências de 'p'.
Na lista de fruits
, 'abacaxi' contém 3 ocorrências de 'p', e as strings 'maçã', 'uvas' e 'manga' contêm 2, 1 e 0 ocorrências de 'p', respectivamente.
Entendendo a classificação estável
Considere outro exemplo. Para o mesmo critério de ordenação, redefinimos a lista de fruits
. Aqui, 'p' ocorre nas strings 'apple' e 'grapes' duas e uma vez, respectivamente. E isso nunca ocorre nas cordas 'mango' e 'melon'.
>>> fruits = ['mango','apple','melon','grapes'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['apple', 'grapes', 'mango', 'melon']
Na lista de saída, 'mango' vem antes de 'melon' mesmo que ambos não tenham o caractere 'p'. Mas por que é este o caso? A função sorted()
executa uma classificação estável; então quando a contagem de 'p' é igual para duas strings, a ordem dos elementos na lista de fruits
original é preservada.
Como exercício rápido, troque as posições de 'manga' e 'melão' na lista de
fruits
, ordene a lista com base no mesmo critério e observe a saída.
️ Saiba mais sobre como classificar listas do Python.
2. Classificando um dicionário Python
Você também pode usar lambdas ao classificar dicionários Python. Considere o seguinte dicionário price_dict
que contém itens e seus preços.
>>> price_dict = { ... 'Milk':10, ... 'Honey':15, ... 'Bread':7, ... 'Candy':3 ... }
Para obter os pares chave-valor de um dicionário como uma lista de tuplas, você pode usar o método de dicionário .items()
:
>>> price_dict_items = price_dict.items() dict_items([('Milk', 10), ('Honey', 15), ('Bread', 7), ('Candy', 3)])
Em Python, todos os iteráveis: listas, tuplas, strings e mais, seguem a indexação zero. Assim, o primeiro item está no índice 0, o segundo item está no índice 1 e assim por diante.
Gostaríamos de classificar pelo valor, que é o preço de cada item no dicionário. Em cada tupla na lista price_dict_items
, o item no índice 1 é o preço. Então, definimos a key
para lambda x:x[1]
, pois ela usará o item no índice 1, o preço, para classificar o dicionário.
>>> dict(sorted(price_dict_items,key=lambda x:x[1])) {'Candy': 3, 'Bread': 7, 'Milk': 10, 'Honey': 15}
Na saída, os itens do dicionário foram classificados em ordem crescente de preços: começando com 'Candy', com preço de 3 unidades, até 'Honey', com preço de 15 unidades.
️ Para saber mais, confira este guia detalhado sobre como classificar um dicionário Python por chave e valor.
Resumindo
E aí está! Você aprendeu como definir funções lambda e usá-las efetivamente com outras funções internas do Python. Aqui está um resumo das principais conclusões:
- Em Python, lambdas são funções anônimas que podem receber vários argumentos e retornar um valor; a expressão a ser avaliada para gerar esse valor de retorno deve ser uma linha de código. Eles podem ser usados para tornar as definições de pequenas funções mais concisas.
- Para definir a função do Lambda, você pode usar a sintaxe: lambda parameter(s): return value .
- Alguns dos casos de uso importantes incluem usá-los com funções
map()
,filter()
ereduce()
e como o parâmetro-chave para personalizar a classificação de iteráveis do Python.
Em seguida, aprenda como realizar a divisão de piso em Python.