Expressões lambda ou forma lambda é utilizado para criar Funções anônimas em tempo de execução.
O objeto sem nome criado se comporta como um objeto de função definido com assim:
def <lambda>(arguments): return expression
Sintaxe
lambda_expr ::= "lambda" [parameter_list]: expression lambda_expr_nocond ::= "lambda" [parameter_list]: expression_nocond
Exemplos
Soma simples
def somar0(x, y): return x + y somar1 = (lambda x,y: x+y) print(somar0(1,2)) print(somar1(1,2)) # 3
Soma multiplos argumentos
def soma(*args): return sum(args) soma1 = lambda *args: sum(args) print() print(soma(1,2,3,4,5,6,7,8,9)) print(soma1(1,2,3,4,5,6,7,8,9)) # 45
Calculadora
def calc(op, *valores): subtrair = lambda *valores: valores[0] - (valores[1]) multiplicar = lambda *valores: valores[0] * valores[1] dividir = lambda *valores: valores[0] / valores[1] exponenciar = lambda *valores: valores[0] ^ valores[1] return { '+': sum(valores), '-': subtrair(*valores), '*': multiplicar(*valores), '/': dividir(*valores), '^': exponenciar(*valores) }.get(op, 'Erro!') print(calc('+', 1,2,3,4)) print(calc('-', 1,2)) print(calc('*', 1,2)) print(calc('/', 1,2)) print(calc('^', 1,2))
Ordenação de lista por definição de campo
from string import ascii_lowercase print() d = [(y, x) for x,y in enumerate(reversed(ascii_lowercase), 1)] print(d) print(sorted(d, key=lambda x: x[0])) # [('z', 1), ('y', 2), ('x', 3), ('w', 4), ('v', 5), ('u', 6), ('t', 7), ('s', 8), ('r', 9), ('q', 10), ('p', 11), ('o', 12), ('n', 13), ('m', 14), ('l', 15), ('k', 16), ('j', 17), ('i', 18), ('h', 19), ('g', 20), ('f', 21), ('e', 22), ('d', 23), ('c', 24), ('b', 25), ('a', 26)] # [('a', 26), ('b', 25), ('c', 24), ('d', 23), ('e', 22), ('f', 21), ('g', 20), ('h', 19), ('i', 18), ('j', 17), ('k', 16), ('l', 15), ('m', 14), ('n', 13), ('o', 12), ('p', 11), ('q', 10), ('r', 9), ('s', 8), ('t', 7), ('u', 6), ('v', 5), ('w', 4), ('x', 3), ('y', 2), ('z', 1)]
Ordenação de dicionário por chave ou valor
from string import ascii_lowercase print() e = {y:x for x,y in enumerate(reversed(ascii_lowercase), 1)} print(e) print(sorted(d, key=lambda x: x[0])) print(sorted(d, key=lambda x: x[1])) # {'m': 14, 's': 8, 't': 7, 'e': 22, 'o': 12, 'q': 10, 'l': 15, 'd': 23, 'v': 5, 'r': 9, 'i': 18, 'w': 4, 'h': 19, 'f': 21, 'j': 17, 'c': 24, 'y': 2, 'u': 6, 'p': 11, 'k': 16, 'a': 26, 'g': 20, 'n': 13, 'z': 1, 'x': 3, 'b': 25} # [('a', 26), ('b', 25), ('c', 24), ('d', 23), ('e', 22), ('f', 21), ('g', 20), ('h', 19), ('i', 18), ('j', 17), ('k', 16), ('l', 15), ('m', 14), ('n', 13), ('o', 12), ('p', 11), ('q', 10), ('r', 9), ('s', 8), ('t', 7), ('u', 6), ('v', 5), ('w', 4), ('x', 3), ('y', 2), ('z', 1)] # [('z', 1), ('y', 2), ('x', 3), ('w', 4), ('v', 5), ('u', 6), ('t', 7), ('s', 8), ('r', 9), ('q', 10), ('p', 11), ('o', 12), ('n', 13), ('m', 14), ('l', 15), ('k', 16), ('j', 17), ('i', 18), ('h', 19), ('g', 20), ('f', 21), ('e', 22), ('d', 23), ('c', 24), ('b', 25), ('a', 26)]
Referências
https://docs.python.org/3/reference/expressions.html
Comentários