Métodos funcionales en python

Aprende como utilizar los métodos funcionales map(), filter(), reduce() y la expresión lambda en Python.

Diseño web
3 minutos
Hace 7 años
Métodos funcionales en python

¡Accede a cientos de cursos
con solo un pago al año!

Blog Microbanner

La programación funcional ha visto un crecimiento bastante grande en su popularidad durante los ultimos años, ya que permite la construcción de aplicaciones mucho más compactas, mantenibles y faciles de testear.

Python es un lenguaje que generalmente se enseña siguiendo el paradigma orientado a objetos, pero gracias a la versatilidad de python, podemos escribir nuestro código siguiendo otro tipo de programación, haciendo nuestras aplicaciones más expresivas y fáciles de desarrollar.

Método map()

El método map nos permite modificar o transformar un array de cualquier forma que queramos, y este método funciona siguiendo la siguiente sintaxis:

1 array = [1,5,3,2,6] 2 3def transform_array(number): 4 return number + 1 5 6new_array = map(transform_array, array) 7 8print(new_array) 9# Salida: 2,6,4,3,7 10

Este método funciona pasando la función que modificara nuestro array y como segundo parámetro el array que queremos modificiar, cabe resaltar que este método no transforma el array original, si no que crea una copia ya modificada de ese array.

Método filter()

El método filter se encarga de crear un nuevo array filtrando el contenido del array original de acuerdo a una condición que puede ser de cualquier tipo, este método funciona de la siguiente manera:

1array = [1,5,3,2,6] 2 3def filter_array(number): 4 return number > 3 5 6filtered_array = filter(filter_array, array) 7 8print(filtered_array) 9# Salida 5,6 10

El primer parámetro recibe la función que se encargara de filtrar cada uno de los elementos de nuestro array, y como segundo parámetro recibiremos el array a filtrar, como podemos ver en el código la función recibira cada uno de los numeros del array y agregara el numero al nuevo array solo si el numero es mayor a 3.

Método reduce()

El método reduce toma los valores de un array y los reduce a un unico valor, es especialmente util cuando por ejemplo queremos sumar todos los valores de un array.

1from functools import reduce 2 3array = [1,5,3,2,6] 4 5def reduce_array(a, b): 6 return a + b 7 8sum = reduce(reduce_array, array) 9 10print(sum) 11# Salida 17 12

Como podemos ver, para hacer uso de este método debemos importar la función  `reduce` desde el modulo de functools.

Lambda

Las expresiones lambda nos permite simplificar bastante nuestra forma de trabajar con los métodos funcionales mencionados anteriormente, ya que no hay necesidad de crear una nueva función cada vez que queramos usar estos métodos, haciendo que estos métodos funcionen de igual manera que en los ejemplos anteriores pero de una manera mucho más compacta, estas expresiones funcionan de la siguiente manera:

1 array = [1,5,3,2,6] 2 3 map_array = map(lambda x: x + 1, array) 4 filtered_array = filter(lambda x: x > 3, array) 5 sum = reduce(lambda a,b: a + b, array) 6 7 print(map_array) 8 print(filtered_array) 9 print(sum) 10

Se declara el array, despues usamos cualquiera de estos métodos funcionales y en su primer parametro en lugar de declarar una nueva función escribimos la palabra reservada lambda y los parámetros separados por coma, en este caso x seria cada uno de los numeros del array, aunque puede llamarse de cualquier manera.

Si quieres aprender Python tenemos un curso en EDteam para que comiences desde cero.

Comentarios de los usuarios