Red de conocimiento informático - Problemas con los teléfonos móviles - Python interesante sintaxis dulce

Python interesante sintaxis dulce

Por supuesto, también existe la magia negra funcional, permítanme presentarla en detalle.

Expresión lambda

Función anónima.

Uso: lista de parámetros lambda: valor de retorno

Ejemplo:

1 función

f=lambda x: x 1

función max (la declaración condicional se escribe de la siguiente manera)

f_max=lambda x, y: x if xgt y else y

La función definida anteriormente y la función definido con def No hace ninguna diferencia, en algunos casos el f= de la izquierda es innecesario.

filtrar, mapear, reducir

La función de filtro acepta dos parámetros, el primero es una función de filtro, el segundo es un objeto transitable, utilizado para seleccionar el filtro que satisface el filtro Para Todos los elementos de la condición, las diferentes versiones de los valores de retorno del filtro son ligeramente diferentes. Estoy usando Python3.5 y el filtro devuelve un objeto atravesable filtrado.

Ejemplo:

Eliminar letras minúsculas

s=filter(lambda x: not str(x).islower(), "asdasfAsfBsdfC")

para ch en s:

print(ch)

La función de mapa acepta tipos de parámetros similares a los filtros y se utiliza para ejecutar en cada elemento de la función de objeto transitable. Esto es similar al concepto de mapeo en matemáticas.

Ejemplo:

Encontrar y=2x 1 (usó en secreto la función de rango para generar el dominio)

s=map(lambda x: 2*x 1 , range(6))

para x en s:

print(x)

La función de reducción realiza una operación de acumulación y el primer parámetro que acepta Debe ser una función con dos parámetros.

Ejemplo:

Suma

de functools importar reducir

s=reduce(lambda x,y:x y,range(1 , 6))

imprimir(s)

Producto (el tercer parámetro opcional representa el valor inicial de la variable acumulada)

desde functools importar reducir

s=reduce(lambda x, y: x*y, range(1, 6), 1)

imprimir(s)

Función Curry

Si una función requiere 2 parámetros y solo pasas un parámetro, obtendrás una función curry, que es una de las características importantes de los lenguajes de programación funcionales. Desafortunadamente, Python no admite llamadas curl a nivel de sintaxis, pero se proporciona una interfaz en la biblioteca.

Ejemplo:

función *3

f_mul=lambda x, y: x*y

desde functools importación parcial

mul3=partial(f_mul, 3)

print(mul3(1))

print(mul3(6))

Embalaje y desembalaje Los paquetes

son algo similares a la coincidencia de patrones en funciones, lo cual es un poco exagerado.

t=(1, 2, 3)

x, y, z=t

Generador de listas

Este también es un Un poco inverosímil, no sé si es estrictamente funcional.

Ejemplo: Generar secuencia de números impares

l=[2*x 1 for x in range(10)]

for i in l:

print(i)

Finalmente, un huevo de pascua (el algoritmo utilizado por un encuestado anterior para embellecer el rostro usando la función de segmentación de tono, olvidé cómo surgió, fue eliminado)

Importar imágenes desde PIL

Esto también es un poco complicado. desde PIL importar imagen

desde matemáticas importar sqrt

im = Image.open("a.jpg")

ret= im.convert(mode=" RGB")

ret = ret.point( lambda x:sqrt(x)*sqrt(255))

ret.save("b.jpg")