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.
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
Cialis 20mg Non Generic Conijand best price for generic cialis Beihooddex Amoxicillin No Side Effects