Red de conocimiento del abogados - Respuesta jurídica de la empresa - ¿Para qué se utilizan las expresiones Lambda? como usar

¿Para qué se utilizan las expresiones Lambda? como usar

En pocas palabras, la expresión lambda mencionada en programación generalmente se usa cuando se necesita una función pero no quiere molestarse en nombrar una función, es decir, se refiere a una función anónima. La relación entre este uso y el llamado cálculo lambda (enlace Wiki en la descripción del título) es un poco como la relación entre la bomba atómica y la ecuación masa-energía. La diferencia es en realidad bastante grande.

No hablaré del cálculo formal de λ, solo hablaré de funciones anónimas con usos prácticos. Tomemos un ejemplo común de Python: eleva al cuadrado cada elemento de una lista:

map( lambda x: x*x, [y for y in range(10)] )

De esta manera de escritura es mejor

def sq(x):

return x * x

map(sq, [y for y in range(10 )])

, porque este último define una función más (contaminante), especialmente si esta función sólo se utilizará una vez. Y la primera forma de escribir es en realidad más legible, porque queda muy claro de un vistazo qué hace la función asignada a la lista. Si observa su código con atención, encontrará que este escenario es realmente muy común: en realidad solo necesita una función que pueda hacer una cosa en alguna parte, y ni siquiera importa cuál sea su nombre crítico. Se pueden utilizar expresiones lambda para hacer esto.

Además, una función anónima es esencialmente una función, y lo que abstrae es un conjunto de operaciones. ¿Qué quiere decir esto? Por analogía

a = [1, 2, 3]

y

f = lambda x : x + 1

, usted Se descubre que las cosas en el lado derecho del signo igual pueden existir completamente aparte de las cosas en el lado izquierdo del signo igual. El nombre en el lado izquierdo del signo igual es solo el identificador de la entidad en el. lado derecho. Si puede acostumbrarse a que [1, 2, 3] exista solo, entonces no es difícil entender que lambda x: x + 1 también puede existir solo. Su significado es la operación en sí de "sumar uno a un determinado número". .

Ahora volvamos a mirar la función map(), que asigna una función a un tipo enumerable. Usando a y f dadas arriba, puedes escribir:

map(f, a)

Es decir, la función f se aplica a cada elemento de a por turno, y la Se obtiene el resultado [2, 3, 4]. Ahora reemplaza f con una expresión lambda, se convierte en:

map( lambda x : x + 1, [1, 2, 3] )

¿Sientes que es muy confuso? ¿Ahora está claro de un vistazo? Especialmente la analogía

a = [1, 2, 3]

r = []

para cada uno en a:

r .append(each+1)

Cuando lo escribe así, encontrará que si puede abstraer el proceso de "recorrer la lista y realizar alguna operación en cada elemento encontrado" de un bucle, se convierte en un mapa de funciones y luego usa una expresión lambda para pasar esta operación como parámetro al mapa. El nivel de pensamiento al considerar las cosas será mayor y habrá menos detalles a considerar. En Python, las funciones "avanzadas" que pueden usar expresiones lambda incluyen reducir, filtrar, etc. Muchos lenguajes también tienen este tipo de herramientas (pero es mejor no usar estas funciones en Python. Demasiadas, consulte la sección de comentarios de / question/19794855/answer/12987428 para más detalles). Este tipo de función que puede aceptar una función como parámetro se denomina "función de orden superior", que proviene de la idea de programación funcional.

En comparación con

muchos otros lenguajes, la lambda de Python tiene muchas restricciones. La más grave es que solo puede consistir en una expresión. Esta restricción es principalmente para evitar abusos, porque cuando las personas encuentran que

lambda es muy conveniente, es más fácil abusar de él. Sin embargo, usarlo demasiado hará que el programa parezca menos claro. tiene tolerancia para los niveles de abstracción. Todos los niveles de comprensión varían.