def operacion_matematica(operador):
if operador == 'suma':
return lambda a, b: a + b
elif operador == 'resta':
return lambda a, b: a - b
elif operador == 'multiplicacion':
return lambda a, b: a * b
elif operador == 'division':
return lambda a, b: a / b
else:
return lambda a, b: None # Si el operador no es válido, devuelve None
# Definir las funciones lambda dentro de la función operacion_matematica
suma = operacion_matematica('suma')
resta = operacion_matematica('resta')
multiplicacion = operacion_matematica('multiplicacion')
division = operacion_matematica('division')
# Utilizar las funciones lambda definidas dentro de la función operacion_matematica
print("Suma:", suma(5, 3)) # Salida: 8
print("Resta:", resta(10, 4)) # Salida: 6
print("Multiplicación:", multiplicacion(2, 6)) # Salida: 12
print("División:", division(15, 3)) # Salida: 5.0
print("Operación inválida:", operacion_matematica('potencia')(2, 3)) # Salida: None
Suma: 8 Resta: 6 Multiplicación: 12 División: 5.0 Operación inválida: None
def ordenar_por_criterio(lista, criterio):
# Utilizar una función lambda para definir el criterio de ordenamiento
if criterio == 'longitud':
return sorted(lista, key=lambda x: len(x))
elif criterio == 'mayusculas':
return sorted(lista, key=lambda x: x.upper())
elif criterio == 'minusculas':
return sorted(lista, key=lambda x: x.lower())
else:
return None # Si el criterio no es válido, devuelve None
# Lista de palabras desordenadas
palabras = ['Python', 'es', 'un', 'lenguaje', 'de', 'programacion']
# Ordenar la lista por longitud de palabras utilizando una función lambda dentro de otra función
print("Ordenado por longitud:", ordenar_por_criterio(palabras, 'longitud'))
# Salida: ['es', 'un', 'de', 'Python', 'programacion', 'lenguaje']
# Ordenar la lista por palabras en mayúsculas utilizando una función lambda dentro de otra función
print("Ordenado por mayúsculas:", ordenar_por_criterio(palabras, 'mayusculas'))
# Salida: ['de', 'es', 'lenguaje', 'programacion', 'Python', 'un']
# Ordenar la lista por palabras en minúsculas utilizando una función lambda dentro de otra función
print("Ordenado por minúsculas:", ordenar_por_criterio(palabras, 'minusculas'))
# Salida: ['de', 'es', 'lenguaje', 'programacion', 'Python', 'un']
Ordenado por longitud: ['es', 'un', 'de', 'Python', 'lenguaje', 'programacion'] Ordenado por mayúsculas: ['de', 'es', 'lenguaje', 'programacion', 'Python', 'un'] Ordenado por minúsculas: ['de', 'es', 'lenguaje', 'programacion', 'Python', 'un']
def filtrar_lista(lista, condicion):
# Utilizar una función lambda para filtrar la lista según la condición especificada
return list(filter(lambda x: condicion(x), lista))
# Lista de números
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Función lambda para verificar si un número es par
es_par = lambda x: x % 2 == 0
# Función lambda para verificar si un número es impar
es_impar = lambda x: x % 2 != 0
# Filtrar la lista de números para obtener solo los pares utilizando una función lambda dentro de otra función
numeros_pares = filtrar_lista(numeros, es_par)
print("Números pares:", numeros_pares) # Salida: [2, 4, 6, 8, 10]
# Filtrar la lista de números para obtener solo los impares utilizando una función lambda dentro de otra función
numeros_impares = filtrar_lista(numeros, es_impar)
print("Números impares:", numeros_impares) # Salida: [1, 3, 5, 7, 9]
Números pares: [2, 4, 6, 8, 10] Números impares: [1, 3, 5, 7, 9]
def funcion_padre():
# Definir una función lambda dentro de otra función que recibe dos parámetros
elevar = lambda x, y: x ** y
# Utilizar la función lambda definida dentro de la función padre
return elevar(2, 3) # Elevar 2 a la potencia 3
# Llamar a la función padre
print(funcion_padre()) # Salida: 8
def operacion_matematica(x, y):
# Definir una función lambda dentro de otra función que recibe dos parámetros
diferencia_cuadrados = lambda a, b: a ** 2 - b ** 2 # a^2-b^2
# Utilizar la función lambda definida dentro de la función padre
return diferencia_cuadrados(x, y) # Realizar la operación matemática con los valores x e y
# Llamar a la función para calcular la operación matemática con diferentes valores
print("Resultado:", operacion_matematica(5, 3)) # 5 ** 2 - 3 ** 2 = 16
print("Resultado:", operacion_matematica(10, 5)) # 10 ** 2 - 5 ** 2 = 75
Resultado: 16 Resultado: 75
def aumentar_valor(n):
# Definir una función lambda dentro de otra función
amplificar = lambda x: x * n
# Utilizar la función lambda definida dentro de la función padre
doblar = amplificar(2) # doble de n
triplicar = amplificar(3) # triple de n
return doblar + triplicar
# Llamar a la función padre
print(aumentar_valor(10)) # Salida: 50
50
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
print(mydoubler)
print(mydoubler(11))
<function myfunc.<locals>.<lambda> at 0x7f80d5c89990> 22
_=lambda x,y: x+y
_(2,3)
5
(lambda x, y: x + y)(2, 6)
8
doble = lambda x: 2 * x
doble(4)
8
maxi = lambda a,b: a if a > b else b
maxi(-2, -7)
-2
matriz = [[2, 3, 4], [30, 4, 12, 0], [1, 4, 15, 20]]
# Lambda para ordenar cada fila de la matriz
ordenar = lambda x: [sorted(i) for i in x]
# Lambda para encontrar el segundo mayor elemento de cada fila
segundo_mayor = lambda matrix, ordena: [y[-2] for y in ordena(matrix)]
# Llamar a la función segundo_mayor con la matriz y la función de ordenamiento
print(segundo_mayor(matriz, ordenar))
[3, 12, 15]
def segundo_max(matriz):
result = []
for fila in matriz:
result.append(sorted(list(set(fila)))[-2])
return result
matriz = [[2, 3, 4], [30, 4, 12, 0], [1, 4, 20, 20]]
segundo_max(matriz)
[3, 12, 4]
matriz = [[2, 3, 4], [30, 4, 12, 0], [1, 4, 20, 20]]
# Lambda para ordenar cada fila de la matriz
ordenar = lambda x: [sorted(i) for i in x]
# Lambda para encontrar el segundo mayor elemento de cada fila
segundo_mayor = lambda matrix, ordena: [y[-2] for y in ordena(matrix)]
# Llamar a la función segundo_mayor con la matriz y la función de ordenamiento
print(segundo_mayor(matriz, ordenar))
[3, 12, 20]
# Uso de reduce
# se necesitan dos cosas:
# 1. Una función (que en este caso es una función lambda)
# 2. Un iterable (que en este caso es una lista)
from functools import reduce
def producto(lista):
return reduce(lambda a,b:a*b, lista)
lista = [2,4,3,6,7]
producto(lista)
1008