Función lambda de la gramática avanzada de Python

Función lambda de la gramática avanzada de Python

En Python, lambdalas funciones también se conocen como funciones anónimas, que son un atajo para definir funciones simples. lambdaLas funciones, como las funciones ordinarias, pueden recibir cualquier cantidad de argumentos, pero solo pueden tener una expresión. lambdaEn este artículo, presentaremos las funciones de Python en detalle con abundantes ejemplos y explicaciones .
inserte la descripción de la imagen aquí

Sintaxis básica de las funciones lambda

lambdaLa sintaxis básica de una función es la siguiente:

lambda arguments: expression

donde argumentses uno o más parámetros y expressiones una expresión sobre esos parámetros. lambdaEl valor de retorno de la función es expressionel valor de .

Por ejemplo, la siguiente lambdafunción toma un argumento xy devuelve xel cuadrado:

square = lambda x: x ** 2
print(square(5))  # Output: 25

Propósito de la función lambda

lambdaLas funciones generalmente se usan cuando se necesita una función pequeña, pero no defdesea definir una función. Por ejemplo, lambdalas funciones a menudo se usan como argumentos para funciones de orden superior como map()y filter().

  1. map(function, iterable)Una función toma una función y un iterable, y devuelve un nuevo iterador que aplica la función a cada elemento del iterable. Por ejemplo, el siguiente código usa la suma map()para elevar al lambdacuadrado cada número en una lista:
numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x ** 2, numbers)
print(list(squares))  # Output: [1, 4, 9, 16, 25]
  1. filter(function, iterable)La función también toma una función y un objeto iterable, y devuelve un Truenuevo iterador que contiene todos los elementos para los que la función devuelve un valor. Por ejemplo, el siguiente código usa filter()y lambdapara filtrar todos los números impares en una lista:
numbers = [1, 2, 3, 4, 5]
odds = filter(lambda x: x % 2 != 0, numbers)
print(list(odds))  # Output: [1, 3, 5]

funciones lambda y clasificación

lambdaLas funciones también se usan comúnmente en operaciones de clasificación en listas u otras estructuras de datos. Las funciones integradas de Python sorted()y sort()los métodos de lista proporcionan un keyparámetro opcional llamado, a través del cual podemos especificar una función para determinar la base para la clasificación.

Por ejemplo, supongamos que tenemos una lista cuyos elementos son diccionarios y queremos ordenar por el valor de una clave particular en el diccionario:

students = [
    {
    
    'name': 'John', 'grade': 90},
    {
    
    'name': 'Jane', 'grade': 88},
    {
    
    'name': 'Dave', 'grade': 92},
]
# 使用lambda函数,按照'grade'键进行排序
students_sorted = sorted(students, key=lambda x: x['grade'])
print(students_sorted) 
# Output: [{'name': 'Jane', 'grade': 88}, {'name': 'John', 'grade': 90}, {'name': 'Dave', 'grade': 92}]

En este ejemplo, lambda x: x['grade']la función toma un diccionario como entrada y devuelve el valor correspondiente a la clave 'calificación' en el diccionario. sorted()La función usará este valor devuelto como base para ordenar.

Limitaciones de las funciones lambda

Aunque lambdalas funciones pueden ayudarnos a definir rápidamente funciones simples, también tienen algunas limitaciones:

  1. lambdaUna función puede contener solo una expresión y no puede contener lógica compleja o múltiples declaraciones.
  2. lambdaLas funciones no pueden contener bloques de instrucciones, como if/else, for, whileetc.
  3. lambdaLas funciones no pueden acceder a variables en ámbitos externos (a menos que esas variables sean globales).

A pesar de estas limitaciones, lambdalas funciones siguen siendo muy útiles cuando se desean funciones ligeras. Dominar lambdael uso de funciones es de gran beneficio para mejorar sus habilidades de programación en Python.

función lambda y función de reducción

El functoolsmódulo de Python proporciona una reduce()función que aplica una función binaria secuencial a todos los elementos de una secuencia, fusionando así las secuencias en una sola salida. Este tipo de operación suele ser muy común en los lenguajes de programación funcional, y también es un escenario común para las funciones lambda.

Por ejemplo, si queremos calcular el producto de todos los elementos de una lista, podemos usar la reduce()función sum lambda:

from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # Output: 120

En este ejemplo, lambda x, y: x * yla función toma dos argumentos y devuelve su producto. reduce()Las funciones usan esta función para procesar secuencialmente los elementos de la lista para calcular su producto.

Ventajas y desventajas de las funciones lambda

Antes de terminar este artículo, resumamos las ventajas y desventajas de las funciones lambda.

ventaja:

  1. Concisión: las funciones lambda nos permiten definir funciones en una línea de código, haciendo que el código sea más conciso.
  2. Comodidad: las funciones lambda se pueden pasar directamente como parámetros a funciones de orden superior sin tener que definirlas de antemano.
  3. Adecuado para lógica simple: para funciones con lógica simple, el uso de funciones lambda es más intuitivo que las funciones definidas por definición.

defecto:

  1. Funcionalidad limitada: dado que las funciones lambda solo pueden tener una expresión, no se puede implementar una lógica compleja.
  2. Legibilidad: si se abusa de la función lambda o se usa para implementar una lógica más compleja, puede reducir la legibilidad del código.

función lambda y función de reducción

El functoolsmódulo de Python proporciona una reduce()función que aplica una función binaria secuencial a todos los elementos de una secuencia, fusionando así las secuencias en una sola salida. Este tipo de operación suele ser muy común en los lenguajes de programación funcional, y también es un escenario común para las funciones lambda.

Por ejemplo, si queremos calcular el producto de todos los elementos de una lista, podemos usar la reduce()función sum lambda:

from functools import reduce

numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x * y, numbers)
print(product)  # Output: 120

En este ejemplo, lambda x, y: x * yla función toma dos argumentos y devuelve su producto. reduce()Las funciones usan esta función para procesar secuencialmente los elementos de la lista para calcular su producto.

Ventajas y desventajas de las funciones lambda

Antes de terminar este artículo, resumamos las ventajas y desventajas de las funciones lambda.

ventaja:

  1. Concisión: las funciones lambda nos permiten definir funciones en una línea de código, haciendo que el código sea más conciso.
  2. Comodidad: las funciones lambda se pueden pasar directamente como parámetros a funciones de orden superior sin tener que definirlas de antemano.
  3. Adecuado para lógica simple: para funciones con lógica simple, el uso de funciones lambda es más intuitivo que las funciones definidas por definición.

defecto:

  1. Funcionalidad limitada: dado que las funciones lambda solo pueden tener una expresión, no se puede implementar una lógica compleja.
  2. Legibilidad: si se abusa de la función lambda o se usa para implementar una lógica más compleja, puede reducir la legibilidad del código.

Función lambda con múltiples parámetros

Todas las funciones que hemos visto antes toman lambdasolo uno o dos parámetros. Sin embargo, lambdalas funciones también pueden aceptar cualquier número de argumentos. Por ejemplo:

f = lambda x, y, z: x + y + z
print(f(1, 2, 3))  # Output: 6

Esta lambdafunción toma tres parámetros y devuelve su suma.

Incluso puede usar argumentos variables (también conocidos como "varargs"):

f = lambda *args: sum(args)
print(f(1, 2, 3, 4, 5))  # Output: 15

Esta lambdafunción toma cualquier número de argumentos y devuelve su suma.

funciones lambda y programación funcional

En la programación funcional, las funciones se consideran ciudadanos de primera clase y pueden asignarse a variables, pasarse como parámetros a otras funciones y devolverse como valores de otras funciones. Este paradigma de programación fomenta el uso de funciones puras sin efectos secundarios, así como funciones de orden superior como map(), y .filter()reduce()

lambdaLas funciones son una encarnación de la programación funcional en Python. Al combinar lambdafunciones y funciones de orden superior, podemos escribir código muy conciso y elegante.

Por ejemplo, el siguiente código usa la función map()y lambdapara convertir todos los elementos de una lista en cadenas:

numbers = [1, 2, 3, 4, 5]
strings = map(lambda x: str(x), numbers)
print(list(strings))  # Output: ['1', '2', '3', '4', '5']

En general, lambdalas funciones son una característica muy poderosa en Python, que nos permite escribir código de manera más rápida y concisa. Sin embargo, también tenga en cuenta que si lambdala lógica de la función es demasiado compleja, puede reducir la legibilidad del código. Por lo tanto, lambdalas funciones se utilizan mejor para implementar una lógica simple.

Argumentos predeterminados y argumentos de palabras clave

Al igual que las funciones normales, las funciones lambda pueden tener argumentos predeterminados y argumentos de palabras clave:

f = lambda x, y=2, *, z=3: x + y + z
print(f(1))  # Output: 6
print(f(1, 4, z=5))  # Output: 10

En este ejemplo, lambdala función tiene dos parámetros posicionales xy y, ycon un valor predeterminado de 2. zes un argumento de palabra clave con un valor predeterminado de 3.

funciones lambda y decoradores

Aunque en Python, los decoradores generalmente se defdefinen usando una sintaxis, lambdalas funciones también se pueden usar para crear decoradores simples.

Por ejemplo, el siguiente código define un decorador que multiplica el resultado de una función por 2:

double_result = lambda f: lambda *args, **kwargs: 2 * f(*args, **kwargs)

@double_result
def add(x, y):
    return x + y

print(add(1, 2))  # Output: 6

En este caso, double_resultun decorador que toma una función fy devuelve una nueva función que devuelve fel doble del resultado.

epílogo

Este artículo proporciona una introducción detallada a las funciones en Python lambda, incluida su sintaxis, propósito y algunos casos de uso comunes. lambdaLas funciones son una herramienta poderosa en Python que puede hacer que su código sea más conciso y elegante. Aunque lambdauna función tiene algunas restricciones, como que solo puede contener una sola expresión, en muchos casos, esto es suficiente.

Espero que este artículo pueda ayudarlo a comprender y dominar las funciones en Python lambda, y hacer que su viaje de programación de Python sea más fluido. Recuerde, la mejor manera de aprender es haciendo, así que trate de escribir algunas lambdafunciones ahora y vea lo que puede hacer.

Supongo que te gusta

Origin blog.csdn.net/qq_42076902/article/details/131256868
Recomendado
Clasificación