Lambda, Map, Filter y Reduce

Posted on

Al igual que lista por comprensión en la entrada anterior, lambda se puede usar para crear funciones anónimas. lambda usó mejor con map, filter, y reduce.

Operador lambda

Como se dijo antes, el operador lambda crea funciones anónimas, que significa funciones sin nombres. La idea es que solo necesita lambda donde se crea. La sintaxis por lambda es lambda lista_de_argumento: expresión. Un ejemplo,

j = lambda x, y: x * y
j(2,2)
#resultado
4

Generalmente, este función sería escrito como:

def multiple(x,y):
    return x * y

multiple(2,2)

Operador Map

El operador map toma dos argumentos, una función y una secuencia (es decir, una lista o una tupla). El operador map aplica cada elemento de la secuencia en la función. En Python 2, map resultaría una lista con cada elemento en la lista correspondiente al elemento en la lista original, si aplicada por la función. Sin embargo, en Python 3, se devuelve un iterador. Un ejemplo,

lista = [0,3,4,10,16]
j = map(lambda x: x*2, lista)


#resultado en Python2:
[0,6,8,20,32]
#resultado en Pyhon3:
<map object at 0x7fdc31ebd278> #esto es un ejemplo de un iterador

j = list(map(lambda x: x*2, lista))

#resultado:
[0,6,8,20,32]

Si no usará lambda, se mostraría así:

def multiplede2(y):
    return x*2
j = list(map(multiplede2, lista))

El Operador Filter

También, el operador filter toma dos argumentos de una función y una secuencia. Sin embargo, filter solo devuelve elementos que resultada en True. Por ejemplo:

numbers = [0,1,2,3,4,5]
impar = list(filter(lambda x: x % 2, numeros))
#resultado
[1,3,5]

El Operador Reduce

La idea del operador es compilar los elementos de la lista en un resultado. Sin embargo, en Python 3 reduce ha sido trasladado al modúlo functools. Por ejemplo,

#En Python2:
j = reduce(lambda x, y: x + y, [47,11,42,13])
#resultado 
113

#En Python3:
import functools
j = functools.reduce(lambda x, y: x + y, [47,11,42,13])
#resultado
113

El diagrama siguente se mostra cómo reduce trabaja.

Reduce: Method of operating

 


Nota del Autor: Creo que voy a necesitar que cambiar el día al lunes o quizás el domingo por la noche.

Por más información:

http://www.pythondiario.com/2017/10/programacion-funcional-lambda-map.html

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *