Notas | Programación funcional en Python

Notas | Programación funcional en Python
Imagen del título: de plxabay

La característica de la programación funcional es que permite que la función en sí se pase a otra función como parámetro, y también permite que se devuelva una función.
La programación funcional en Python utiliza principalmente las siguientes cuatro funciones básicas:
(1), map ()
(2), reduce ()
(3), filter ()
(4), sorted ()
y una función anónima lambda () Se utiliza a menudo en en conjunción con ellos.

Uno, mapa

El método de llamada común de la función map () es el siguiente:

map(function, interable)

Los dos parámetros de la función map () son obligatorios. El primer parámetro es un nombre de función o función anónima, y ​​el segundo parámetro es un objeto iterable, como una lista, tupla, etc.
La función implementada por la función map () es pasar los elementos del interable a la función a su vez para su ejecución y devolver el resultado. En python2.x, el resultado se devuelve como una nueva lista, y en python3.x, devuelve un objeto de mapa. Puede usar el método list () para obtener el contenido del objeto de mapa, o puede recorrerlo.
El siguiente ejemplo (python3):

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

<map object at 0x0000013D497E92E8>

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

[2, 4, 6, 8, 10]

>>> for i in map(lambda x: x*2, [1,2,3,4,5]):

...     print(i)

...

2

4

6

8

10

>>>

Por supuesto, map () aún puede pasar múltiples objetos interable, de la siguiente manera:

>>> list(map(lambda x,y: x+y, [1,2,3,4,5], [6,7,8,9,10]))

[7, 9, 11, 13, 15]

>>>

Al pasar varios objetos interable, primero el cuerpo de la función acepta varios parámetros. Por ejemplo, si pasa el ejemplo anterior y pasa dos objetos interable, la función acepta dos parámetros, a saber, x, y. Cuando se pasan varios objetos interable, la función toma valores de los objetos interable a su vez, luego forma una nueva tupla y finalmente pasa la tupla a una función. Como en el ejemplo anterior, la primera vez (1,6) se pasa en La función obtiene el resultado 7, la segunda vez (2,7) obtiene el resultado 9, y así sucesivamente.

Dos, reducir

En python3, reduce () se eliminó del espacio de nombres global. Ahora está ubicado en el módulo functools. Para usarlo, primero debe importar el módulo. Los métodos de llamada comunes de reduce () son los siguientes:

from functools import reduce

reduce(function, interable)

El primer parámetro es un nombre de función o función anónima, el segundo parámetro es un objeto iterable y el tercer parámetro es un valor inicial (parámetro opcional), y su función es devolver el resultado del cálculo de la función. como sigue:

>>> from functools import reduce

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

15

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

120

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

12000

El principio de funcionamiento de reduce () es tomar un elemento en el objeto interable a su vez, calcular con el último resultado y, finalmente, devolver el resultado. Si no se pasa ningún parámetro predeterminado, el primer parámetro será el resultado del primer cálculo y el valor se pasará del segundo parámetro. Si hay parámetros predeterminados, calcule directamente desde el primer parámetro y el valor predeterminado, y luego continúe.

Tres, filtro

El formato de llamada de la función filter () es el siguiente:

filter(function, iterable)

Los dos parámetros de la función filter (), el primero es el nombre de la función o la función anónima, y ​​el segundo es un objeto iterable, como una lista. La función filer () es similar a la función map (). Se calculan a partir del objeto interable y se pasan a la función a su vez. La diferencia es que la función filter () juzgará el valor bool del resultado de cada ejecución, y solo el valor bool es Verdadero para filtrar. En python2, todavía devuelve una lista, en python3 devuelve un objeto de filtro. Puede usar el método list () y el bucle para obtener el valor dentro. como sigue:

>>> list(filter(lambda x: x/2, [1,2,3,4,5]))

[1, 2, 3, 4, 5]

>>> list(filter(lambda x: x%2, [1,2,3,4,5]))

[1, 3, 5]

>>>

四 、 ordenado

El método de llamada de la función sorted () es el siguiente:

sorted(iterable, key=None, reverse=False)

Las descripciones de los parámetros son las siguientes:
interable es un objeto iterable, como una lista, tupla, etc .;
clave, es principalmente un elemento utilizado para la comparación, es solo un parámetro, el parámetro específico se toma del objeto iterable y especifica uno de los objetos iterables Elemento a ordenar;
reverso, regla de clasificación, reverso = Verdadero significa orden descendente, reverso = Falso significa orden ascendente, el valor predeterminado es Falso; el
siguiente ejemplo:

>>> sorted([1,9,8,2,3])

[1, 2, 3, 8, 9]

>>> sorted([1,9,8,2,3], reverse=True)

[9, 8, 3, 2, 1]

>>> sorted(L, key=lambda x:x[1])

[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]

>>>

Cinco, resumen

Los beneficios de la programación funcional son los siguientes:
(1) El código es más conciso;
(2) No hay un cuerpo de bucle en el código, faltan muchas variables temporales y la lógica es más simple;
(3) Conjuntos de datos, las operaciones y los valores de retorno están todos juntos

Supongo que te gusta

Origin blog.51cto.com/15080014/2654770
Recomendado
Clasificación