Varias funciones de orden superior que debes aprender para aprender Python

1. expresión lambda

Una función anónima (en inglés: función anónima) se refiere a una clase de funciones que no necesitan definir un identificador (nombre de la función). En términos simples, nos permite funcionar sin un nombre de función.

En circunstancias normales, definimos una función, utilizando defpalabras clave, y cuando aprende a utilizar funciones anónimas, la alternativa defes lambda.

Úselos aquí defy lambdason un ejemplo, pronto lo comprenderá.

def mySum(x, y):
    return x+y
mySum(2, 3)
# 5

(lambda x, y: x+y)(2, 4)
# 6

En el ejemplo anterior, podemos ver que la función anónima se ejecuta directamente, ahorrando muchas líneas de código. ¿Hay alguna?

A continuación, echemos un vistazo más de cerca a su uso

带 si / si no

>>>( lambda x, y: x if x < y else y )( 1, 2 )
1

Función anidada

>>>( lambda x: ( lambda y: ( lambda z: x + y + z  )( 1 ) )( 2 ) )( 3 )
6

función recursiva

>>> func = lambda n:1 if n == 0 else n * func(n-1)
>>> func(5)
120

o

>>> f = lambda func, n: 1 if n == 0 else n * func( func, n - 1 )
>>> f(f,4)
24

En el ejemplo anterior, en comparación con las funciones regulares, las expresiones lambda son extrañas y menos legibles. Además de poder ejecutarse directamente, parece que no hay otra función más destacada, ¿por qué la presentamos hoy?

Primero que nada, necesitamos saber que lambda es una expresión, no una declaración. Debido a esta característica, podemos usarla en algunas escenas especiales. ¿Cuál es la escena específica? A continuación, presentaremos varias funciones integradas muy útiles.

2. función de mapa

La función de mapa, recibe dos parámetros, el primer parámetro es un objeto de función (por supuesto, también puede ser una expresión lambda), el segundo parámetro es una secuencia.

¿Qué tipo de funciones puede lograr ?, te daré un ejemplo.

>>> map(lambda x: x*2, [1,2,3,4,5])
[2, 4, 6, 8, 10]

Se puede ver claramente que puede pasar cada elemento en la secuencia posterior como parámetro a la lambda.

Cuando no estemos usando la función de mapa, puede escribir así.

mylist=[]
for i in [1,2,3,4,5]:
    mylist.append(i*2)

3. función de filtro

La función de filtro es similar a la función de mapa. También recibe dos parámetros, una expresión lambda y una secuencia. Atravesará cada elemento en la secuencia subsiguiente y lo pasará como parámetro a la expresión lambda. Cuando la expresión devuelva Verdadero, el elemento se mantendrá. Cuando la expresión devuelva Falso, el elemento se descartará.

El siguiente ejemplo filtrará una lista de elementos menores que 0.

>>>filter(lambda x: x < 0, range(-5, 5))
[-5, -4, -3, -2, -1]

4. reducir la función

La función de reducción es similar. Su función es operar primero en el primer y segundo elemento de la secuencia, y luego usar la función lambda para calcular el resultado con el tercer dato, y luego calcular el resultado con el cuarto elemento, y así sucesivamente. Hasta que no haya más elementos.

Aquí hay un ejemplo que comprenderá.

>>>reduce(lambda x,y: x+y, [1,2,3,4,5])
15

El proceso de cálculo se desglosa así.

1+2=3
3+3=6
6+4+10
10+5=15

5. Precauciones

Las funciones anteriores, al dominar su escritura con habilidad, pueden hacer que nuestro código se vea más Pythonic y, hasta cierto punto, el código se ve más conciso.

Si es un novato, debe tener en cuenta que el ejemplo anterior se demuestra en el entorno Python 2.x. En Python 3.x, es diferente, puede probarlo usted mismo.

He aquí un resumen:

Primero, lo que devuelven las funciones de mapa y filtro ya no es una lista, sino un objeto iterador. Aquí hay un ejemplo de mapa

>>> map_obj = map(lambda x: x*2, [1,2,3,4,5])
>>> from collections.abc import Iterator
>>> isinstance(map_obj, Iterator)
True
>>> next(map_obj)
2
>>> list(map_obj)
[4, 6, 8, 10]

El segundo punto es que no se puede llamar a reduce directamente, sino que se debe importar antes de poder usarlo.

from functools import reduce

Supongo que te gusta

Origin blog.csdn.net/weixin_36338224/article/details/109350873
Recomendado
Clasificación