¿Cuáles son las funciones de orden superior en Python?
La función map() acepta dos parámetros, uno es una función y el otro es un iterador que el mapa se pasará a la función para actuar sobre cada elemento de la secuencia, y el mapa. El resultado se utilizará como nuevo. Se devuelve el iterador.
Por ejemplo, supongamos que tenemos una función f(x)=x*2, que debe estar en la lista[1, 2, 3, 4, 5, 6, 7, 8,
9] para ejecutar esta función, puede usar map() para implementarla.
gt; gt; gt; def f(x):
... devolver x*2
...
gt; gt; gt; r = mapa(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
gt; /p>
[2, 4, 6, 8, 10, 12, 14, 16, 18]
Por lo tanto, map() desempeña el papel de una función de orden superior. abstrae reglas aritméticas, por lo que no solo podemos calcular la función simple f(x)=x*2, sino también funciones arbitrariamente complejas, como convertir todos los números de una lista en cadenas:
gt;gt ;gt; lista(mapa(cadena, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
["1", "2", "3", "4", "5", "6", "7", "8", "9"]
2.reduce
Reducir es una función que opera en la secuencia [x1, x2,
x3...], debe aceptar dos parámetros. Esta función debe aceptar dos parámetros y reducir continuará calculando el resultado y realizará un cálculo acumulativo en el siguiente elemento de la secuencia. En pocas palabras, calcula el resultado de x1 y x2, luego calcula el resultado con x3, y así sucesivamente. Por ejemplo, si desea sumar una secuencia, puede usar reducir para hacerlo.
gt;gt;gt; de functools importar reducir
gt;gt;gt; def add(x, y):
... devolver x y
...
gt;gt;gt; reducir(agregar, [1, 3, 5, 7, 9])
25
En otras palabras, suponiendo que Python no proporciona una función int(), puedes escribir tu propia función para convertir una cadena en un número entero en unas pocas líneas de código.
3. filtro
El filtro utilizado para filtrar secuencias es similar a la función de mapa. El filtro también recibe una función y una secuencia. A diferencia del mapa, el filtro pasará la función en secuencia. Actúa sobre cada elemento y luego decide conservar o descartar el elemento en función de si el valor de retorno es Verdadero o Falso. Por ejemplo, en una lista, si desea eliminar números pares y solo conservar los impares, puede escribir como. esto:
def is_odd(n):
return n 2 == 1
lista(filtro(is_odd, [1, 2, 4, 5, 5, 6, 9, 10, 15] ))
# resultado: [1, 5, 9, 15]
Para eliminar la cadena vacía de la secuencia, puedes escribir es así:
def not_empty(s ):
return s y s.strip()
list(filter(not_empty, ["A", "", "B", Ninguno, "C", " " ]))
# Resultado: ["A", "B", "C"]
Puede Se puede ver que para la función de alto orden filter (), la clave es implementar correctamente la función de filtro.
4. Clasificación
Ya sea clasificación por burbujas o clasificación rápida, el núcleo de la clasificación es comparar los tamaños de dos elementos. Si es un número, podemos compararlo directamente, pero ¿qué pasa si es una cadena o dos dict s? No tiene sentido comparar tamaños matemáticos directamente, por lo que el proceso de comparación debe abstraerse mediante funciones, y la función sorted() incorporada de Python puede ordenar la lista:
gt; 36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
Además, la función sorted() es una función de orden superior, también puede utilizar una función clave para implementar una clasificación personalizada, como ordenar por valor absoluto:
gt;gt;gt; sorted([36, 5, -12, 9, - 21], tecla= abs)
[5, 9, -12, -21, 36]
[5, 9, -21, 36]
[5, 9 -12, -21, 36]
[5, 9 -12, -21, 36]