"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo utilizar funciones Lambda en Python

Cómo utilizar funciones Lambda en Python

Publicado el 2024-11-15
Navegar:873

How to Use Lambda Functions in Python

Las funciones Lambda en Python son una forma poderosa de crear funciones pequeñas y anónimas sobre la marcha. Estas funciones se utilizan normalmente para operaciones breves y sencillas en las que la sobrecarga de una definición de función completa sería innecesaria.

Mientras que las funciones tradicionales se definen utilizando la palabra clave def, las funciones Lambda se definen utilizando la palabra clave lambda y se integran directamente en líneas de código. En particular, se utilizan a menudo como argumentos para funciones integradas. Permiten a los desarrolladores escribir código limpio y legible al eliminar la necesidad de definiciones de funciones temporales.

En este artículo, cubriremos lo que hacen las funciones Lambda y su sintaxis. También brindaremos algunos ejemplos y mejores prácticas para usarlos, y discutiremos sus ventajas y desventajas.

Requisitos previos

Las funciones Lambda han sido parte de Python desde la versión 2.0, por lo que necesitarás:

  • Versión mínima de Python: 2.0.
  • Versión de Python recomendada: 3.10 o posterior.

En este tutorial, veremos cómo usar funciones Lambda con la biblioteca Pandas: una biblioteca de manipulación y análisis de datos de código abierto rápida, potente, flexible y fácil de usar. Si no lo tienes instalado, ejecuta lo siguiente:

pip install pandas

Sintaxis y conceptos básicos de las funciones Lambda para Python

Primero, definamos la sintaxis que los desarrolladores deben usar para crear funciones Lambda.

Una función Lambda se define utilizando la palabra clave lambda, seguida de uno o más argumentos y una expresión:

lambda arguments: expression

Imaginemos que queremos crear una función Lambda que sume dos números:

add = lambda x, y: x   y

Ejecute lo siguiente:

result = add(3, 5)
print(result)

Esto resulta en:

8

Hemos creado una función anónima que toma dos argumentos, xey. A diferencia de las funciones tradicionales, las funciones Lambda no tienen nombre: por eso decimos que son "anónimas".

Además, no utilizamos la declaración de devolución, como lo hacemos en las funciones normales de Python. Entonces podemos usar la función Lambda a voluntad: se puede imprimir (como hicimos en este caso), almacenar en una variable, etc.

Ahora veamos algunos casos de uso comunes para funciones Lambda.

Casos de uso comunes para funciones Lambda

Las funciones Lambda se utilizan particularmente en situaciones en las que necesitamos una función temporalmente simple. En particular, se utilizan comúnmente como argumentos para funciones de orden superior.

Veamos algunos ejemplos prácticos.

Uso de funciones Lambda con la función map()

map() es una función incorporada que aplica una función determinada a cada elemento de un iterable y devuelve un objeto de mapa con los resultados.

Por ejemplo, digamos que queremos calcular las raíces cuadradas de cada número en una lista. Podríamos usar una función Lambda como esta:

# Define the list of numbers
numbers = [1, 2, 3, 4]

# Calculate square values and print results
squared = list(map(lambda x: x ** 2, numbers))
print(squared)

Esto resulta en:

[1, 4, 9, 16]

Ahora tenemos una lista que contiene las raíces cuadradas de los números iniciales.

Como podemos ver, esto simplifica enormemente los procesos para usar funciones sobre la marcha que no necesitan ser reutilizadas más adelante.

Uso de funciones Lambda con la función filter()

Ahora, supongamos que tenemos una lista de números y queremos filtrar los números pares.

Podemos usar una función Lambda de la siguiente manera:

# Create a list of numbers
numbers = [1, 2, 3, 4]

# Filter for even numbers and print results
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even)

Esto resulta en:

[2,4]

Uso de funciones Lambda con la función sorted()

La función sorted() en Python devuelve una nueva lista ordenada de los elementos de cualquier iterable. Usando funciones Lambda, podemos aplicar criterios de filtrado específicos a estas listas.

Por ejemplo, supongamos que tenemos una lista de puntos en dos dimensiones: (x,y). Queremos crear una lista que ordene los valores de y de forma incremental.

Podemos hacerlo así:

# Creates a list of points
points = [(1, 2), (3, 1), (5, -1)]

# Sort the points and print
points_sorted = sorted(points, key=lambda point: point[1])
print(points_sorted)

Y obtenemos:

[(5, -1), (3, 1), (1, 2)]

Uso de funciones Lambda en listas por comprensión

Dada su concisión, las funciones Lambda se pueden integrar en listas por comprensión para cálculos sobre la marcha.

Supongamos que tenemos una lista de números. Queremos:

  • Iterar sobre toda la lista
  • Calcular e imprimir el doble de los valores iniciales.

Así es como podemos hacerlo:

# Create a list of numbers
numbers = [1, 2, 3, 4]

# Calculate and print the double of each one
squared = [(lambda x: x ** 2)(x) for x in numbers]
print(squared)

Y obtenemos:

[1, 4, 9, 16]

Ventajas de utilizar funciones Lambda

Teniendo en cuenta los ejemplos que hemos explorado, repasemos algunas de las ventajas de usar funciones Lambda:

  • Concisión y legibilidad donde la lógica es simple: las funciones Lambda permiten un código conciso, lo que reduce la necesidad de definiciones de funciones estándar. Esto mejora la legibilidad en los casos en que la lógica de la función es simple.
  • Capacidades de programación funcional mejoradas: las funciones Lambda se alinean bien con los principios de programación funcional, lo que permite construcciones funcionales en código Python. En particular, facilitan el uso de funciones de orden superior y la aplicación de funciones como objetos de primera clase.
  • Cuándo y por qué preferir las funciones Lambda: Las funciones Lambda son particularmente ventajosas cuando se definen funciones cortas y "desechables" que no necesitan reutilizarse en ninguna otra parte del código. Por lo tanto, son ideales para uso en línea, como argumentos para funciones de orden superior.

Limitaciones e inconvenientes

Analicemos brevemente algunas limitaciones y desventajas de las funciones Lambda en Python:

  • Desafíos de legibilidad en expresiones complejas: Si bien las funciones Lambda son concisas, pueden resultar difíciles de leer y comprender cuando se usan para expresiones complejas. Esto puede generar código que sea más difícil de mantener y depurar.
  • Limitaciones en el manejo y depuración de errores: Como las funciones Lambda solo pueden contener una única expresión, no pueden incluir declaraciones, como el bloque try-except para el manejo de errores. Esta limitación los hace inadecuados para operaciones complejas que requieren estas características.
  • Funcionalidad restringida: Dado que las funciones Lambda solo pueden contener una única expresión, son menos versátiles que las funciones estándar. Esta restricción inherente al diseño limita su uso a operaciones y transformaciones simples.

Mejores prácticas para utilizar funciones Lambda

Ahora que hemos considerado algunos pros y contras, definamos algunas prácticas recomendadas para utilizar las funciones Lambda de forma eficaz:

  • Mantenlas simples: Para mantener la legibilidad y la simplicidad, las funciones Lambda deben ser breves y limitarse a operaciones sencillas. Las funciones con lógica compleja deben refactorizarse en funciones estándar.
  • Evite el uso excesivo: si bien las funciones Lambda son convenientes para numerosas situaciones, su uso excesivo puede generar código que sea difícil de leer y mantener. Úsalos con prudencia y opta por funciones estándar cuando la claridad sea fundamental.
  • Combinar funciones Lambda con otras características de Python: Como hemos visto, las funciones Lambda se pueden combinar de manera efectiva con otras características de Python, como listas por comprensión y funciones de orden superior. Esto puede dar como resultado un código más expresivo y conciso cuando se usa apropiadamente.

Técnicas avanzadas con funciones Lambda

En determinados casos, técnicas de funciones Lambda más avanzadas pueden resultar de ayuda.

Veamos algunos ejemplos.

Funciones Lambda anidadas

Las funciones lambda se pueden anidar para operaciones complejas.

Esta técnica es útil en escenarios donde necesitas tener múltiples transformaciones pequeñas en una secuencia.

Por ejemplo, supongamos que desea crear una función que calcule la raíz cuadrada de un número y luego sume 1. Así es como puede usar funciones Lambda para hacerlo:

# Create a nested lambda function
nested_lambda = lambda x: (lambda y: y ** 2)(x)   1

# Print the result for the value 3
print(nested_lambda(3))

Obtienes:

10

Integración con bibliotecas Python para funcionalidad avanzada

Muchas bibliotecas de Python aprovechan las funciones de Lambda para simplificar tareas complejas de procesamiento de datos.

Por ejemplo, las funciones Lambda se pueden usar con Pandas y NumPy para simplificar la manipulación y transformación de datos.

Supongamos que tenemos un marco de datos con dos columnas. Queremos crear otra columna que sea la suma de las otras dos. En este caso, podemos usar funciones Lambda de la siguiente manera:

# Create the columns' data
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}

# Create data frame
df = pd.DataFrame(data)

# Create row C as A B and print the dataframe
df['C'] = df.apply(lambda row: row['A']   row['B'], axis=1)
print(df)

Y obtenemos:

   A  B  C
0  1  4  5
1  2  5  7
2  3  6  9

¡Esto es todo para nuestro recorrido rápido por las funciones Lambda en Python!

Concluyendo

En este artículo, vimos cómo usar funciones Lambda en Python, exploramos sus ventajas y desventajas, algunas de las mejores prácticas y abordamos un par de casos de uso avanzados.

¡Feliz codificación!

PD. Si desea leer las publicaciones de Python tan pronto como salgan de imprenta, suscríbase a nuestro boletín Python Wizardry y ¡no se pierda ni una sola publicación!

Declaración de liberación Este artículo se reproduce en: https://dev.to/appsignal/how-to-use-lambda-functions-in-python-3llj?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3