Apuntes_Python/02_conceptos/08_lambda_functions/README.md

2.3 KiB

lambda

Función lambda es una función pequeña y anónima, puede tomar cualquier
cantidad de argumentos, pero solo puede contener una expresión
( lamdba argumentos: expresión )

Ejemplos:

Función que recibe un número y retorna este mas 10

add10 = lambda x: x+10
add10(5)    # 15

def add10_func(x):
    return x + 10

Función que recibe dos números y retorna el producto de estos

mult = lambda x,y: x*y
mult(5, 3)  # 15

def mult_func(x, y):
    return x*y

Ordenar

## ordenar según el primer valor de las tuplas
puntos_2D = [(1, 2), (15, 1), (5, -1), (10, 4)]
puntos_2D_sorted = sorted(puntos_2D)
# [(1, 2), (5, -1), (10, 4), (15, 1)]

# ordenar por el segundo valor de las tuplas
def sort_by_y(x):
    return x[1]

# puntos_2D_sorted = sorted(puntos_2D, key=sort_by_y)
puntos_2D_sorted = sorted(puntos_2D, key=lambda x: x[1])
# (5, -1), (15, 1), (1, 2), (10, 4)]


# ordena según la suma de los valores de las tuplas
puntos_2D_sorted = sorted(puntos_2D, key=lambda x: x[0] + x[1])
# [(1, 2), (5, -1), (10, 4), (15, 1)]

map(función, secuencia)

a = [1, 2, 3, 4, 5]
b = map(lambda x: x*2, a)
print(list(b))
# [2, 4, 6, 8, 10]

c = [x *2 for x in a]
print(c)
# [2, 4, 6, 8, 10]

filter(función, secuencia)

retorna valores donde se cumple la condición de la función

b = filter(lambda x: x%2 == 0, a)
print(list(b))
# [2, 4]

c = [x for x in a if x%2 == 0]
print(c)
# [2, 4]

reduce(función, secuencia)

from functools import reduce
producto_a = reduce(lambda x,y: x*y, a)
print(list(producto_a))
# 120