Em Python, uma função anônima significa que uma função não tem nome. Como já sabemos, a palavra-chave def é usada para definir uma função normal em Python. Da mesma forma, a palavra-chave lambda é usada para definir uma função anônima em Python. Possui a seguinte sintaxe:
Sintaxe: argumentos lambda: expressão
- Essa função pode ter qualquer número de argumentos, mas apenas uma expressão, que é avaliada e retornada.
- Um é livre para usar funções lambda sempre que os objetos de função são necessários.
- Você precisa estar ciente de que as funções lambda são sintaticamente restritas a uma única expressão.
- Ele tem vários usos em campos específicos de programação, além de outros tipos de expressões em funções.
Vamos examinar este exemplo e tentar entender a diferença entre uma função definida por def
normal e uma função lambda
. Este é um programa que retorna o cubo de um determinado valor:
# Código Python para ilustrar o cubo de um número # mostrando a diferença entre def () e lambda (). def cube(y): return y*y*y lambda_cube = lambda y: y*y*y # usando a definição normal de uma função print(cube(5)) # usando uma função lambda print(lambda_cube(5))
Resultado:
125 125
Como podemos ver no exemplo acima, a função cube()
e lambda_cube()
se comportam da mesma forma e conforme pretendido. Vamos analisar o exemplo acima um pouco mais:
- Sem usar Lambda: aqui, ambos retornam o cubo de um determinado número. Mas, ao usar def, precisamos definir uma função com um cubo de nome e passar um valor para ele. Após a execução, também precisamos retornar o resultado de onde a função foi chamada usando a palavra-chave return .
- Usando Lambda: a definição de Lambda não inclui uma declaração de “retorno”, ela sempre contém uma expressão que é retornada. Também podemos colocar uma definição lambda em qualquer lugar em que uma função seja esperada e não precisamos atribuí-la a nenhuma variável. Essa é a simplicidade das funções lambda.
As funções lambda podem ser usadas junto com funções integradas como filter()
, map()
e reduce()
.
Usando a função lambda()
com filter()
A função filter()
em Python recebe uma função e uma lista como argumentos. Isso oferece uma maneira elegante de filtrar todos os elementos de uma sequência “sequência”, para a qual a função retorna True
. Aqui está um pequeno programa que retorna os números ímpares de uma lista de entrada:
Exemplo 1:
# Código python para ilustrar o uso de # filter() com lambda() li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61] final_list = list(filter(lambda x: (x%2 != 0) , li)) print(final_list)
Resultado:
[5, 7, 97, 77, 23, 73, 61]
Exemplo 2:
# Pessoas acima de 18 anos ages = [13, 90, 17, 59, 21, 60, 5] adults = list(filter(lambda age: age>18, ages)) print(adults)
Resultado:
[90, 59, 21, 60]
Usando a função lambda()
com map()
A função map()
em Python recebe uma função e uma lista como argumento. A função é chamada com uma função lambda e uma lista e uma nova lista é retornada que contém todos os itens modificados por lambda retornados por aquela função para cada item. Exemplo:
Exemplo 1:
# Código python para ilustrar o funcionamento da função # map() com lambda() # para obter o dobro de uma lista li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61] final_list = list(map(lambda x: x*2, li)) print(final_list)
Resultado:
[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]
Exemplo 2:
# Python program to demonstrate # use of lambda() function # with map() function animals = ['cão', 'gato', 'papagaio', 'coelho'] # aqui pretendemos mudar todos os nomes de animais # para maiúsculas e retorna o mesmo uppered_animals = list(map(lambda animal: str.upper(animal), animals)) print(uppered_animals)
Resultado:
['CÃO', 'GATO', 'PAPAGAIO', 'COELHO']
Usando a função lambda()
com reduce()
A função reduce()
em Python leva em uma função e uma lista como um argumento. A função é chamada com uma função lambda e um iterável e um novo resultado reduzido é retornado. Isso executa uma operação repetitiva sobre os pares do iterável. A função reduce()
pertence ao módulo functools .
Exemplo 1:
# Código Python para ilustrar a reduce() # com lambda() para obter a soma de uma lista from functools import reduce li = [5, 8, 10, 20, 50, 100] sum = reduce((lambda x, y: x + y), li) print (sum)
Resultado:
193
Aqui, os resultados dos dois elementos anteriores são adicionados ao próximo elemento e isso continua até o final da lista como (((((5+8)+10)+20)+50)+100).
Exemplo 2:
# código python para demonstrar o funcionamento de reduce() # com uma função lambda import functools # initializing list lis = [ 1 , 3, 5, 6, 2, ] # usando reduce para calcular o elemento máximo da lista print("O elemento máximo da lista é: ",end="") print(functools.reduce(lambda a,b : a if a > b else b,lis))
Resultado:
O elemento máximo da lista é: 6
Este artigo é uma contribuição de Chinmoy Lenka.
Artigo escrito por GeeksforGeeks e traduzido por Acervo Lima de Python Lambda Functions.
0 comentários:
Postar um comentário