mapear, filtrar y reducir funciones en Python

Python proporciona muchas funciones integradas que están predefinidas y que el usuario final puede usar simplemente llamándolas. Estas funciones no solo facilitan el trabajo de los programadores, sino que también crean un entorno de codificación estándar. En este artículo, aprenderá sobre tres funciones tan impresionantes, a saber, map(), filter y reduce() en Python.

Entonces empecemos. 😃

¿Qué son las funciones map(), filter() y reduce() en Python?

Como se mencionó anteriormente, map(), filter() y reduce() son funciones integradas de Python. Estas funciones permiten el aspecto de programación funcional de Python. En la programación funcional, los argumentos pasados ​​son los únicos factores que deciden sobre la salida. Estas funciones pueden tomar cualquier otra función como parámetro y también pueden proporcionarse a otras funciones como parámetros. Así que ahora echemos un vistazo más profundo a cada una de estas funciones.

La función mapa():

La función map() es un tipo de orden superior. Como se mencionó anteriormente, esta función toma otra función como parámetro junto con una secuencia de iterables y devuelve una salida después de aplicar la función a cada iterable presente en la secuencia. Su sintaxis es la siguiente:

SINTAXIS:

mapa (función, iterables)

Aquí, la función define una expresión que a su vez se aplica a los iterables. La función de mapa puede tomar funciones definidas por el usuario, así como funciones lambda como parámetro.

Uso de funciones Lambda y definidas por el usuario dentro de:

Funciones definidas por el usuario dentro de map():

La función map() puede tomar funciones definidas por el usuario como parámetros. Los parámetros de estas funciones son fijados exclusivamente por el usuario o el programador. Por ejemplo:

EJEMPLO:

def newfunc(a):
    return a*a
x = map(newfunc, (1,2,3,4)) #x is the map object
print(x)
print(set(x))

PRODUCCIÓN:

{16, 1, 4, 9}

Como puede ver, x es un objeto de mapa. La salida de la siguiente parte muestra la función map tomando newfunc() como su parámetro y luego aplica a*a a todos los iterables. Como resultado, los valores de todos los iterables se multiplican por sí mismos y se devuelven.

NOTA: La salida no está en el orden de los valores de los iterables porque he usado la función set(). También puede usar las funciones list() o tuple(), por ejemplo:

EJEMPLO:

def newfunc(a):
    return a*a
x = map(newfunc, (1,2,3,4)) #x is the map object
print(x)
print(list(x))

PRODUCCIÓN:

[1, 4, 9, 16]

También puede pasar más de una lista de parámetros. Por ejemplo:

EJEMPLO:

def func(a, b):
    return a + b

a = map(func, [2, 4, 5], [1,2,3])
print(a)
print(tuple(a))

PRODUCCIÓN:

(3, 6, 8)

Ahora veamos cómo puede usar las funciones lambda dentro de la función map().

Funciones lambda dentro de map():

Las funciones lambda son funciones que no tienen ningún nombre. Estas funciones a menudo se proporcionan como parámetros para otras funciones. Ahora intentemos incrustar funciones lambda dentro de la función map(). Considere el siguiente ejemplo:

EJEMPLO:

tup= (5, 7, 22, 97, 54, 62, 77, 23, 73, 61)
newtuple = tuple(map(lambda x: x+3 , tup)) 
print(newtuple)

PRODUCCIÓN:

(8, 10, 25, 100, 57, 65, 80, 26, 76, 64)

El resultado anterior es el resultado de aplicar la expresión lambda (x+3) a cada elemento presente en la tupla.

La función filtro():

La función filter() se utiliza para crear una lista de salida que consta de valores para los que la función devuelve verdadero. La sintaxis de la misma es la siguiente:

SINTAXIS:

filter(función, iterables)

Al igual que map(), esta función se puede usar y también puede tomar funciones definidas por el usuario, así como funciones lambda como parámetro.

EJEMPLO:

def func(x):
    if x>=3:
        return x
y = filter(func, (1,2,3,4))  
print(y)
print(list(y))

PRODUCCIÓN:

[3, 4]

Como puede ver, y es el objeto de filtro y la lista es una lista de valores que son verdaderos para la condición (x>=3).

Usando lambda dentro del filtro ():

La función lambda que se usa como parámetro en realidad define la condición que se va a verificar. Por ejemplo:

EJEMPLO:

y = filter(lambda x: (x>=3), (1,2,3,4))
print(list(y))

PRODUCCIÓN: [3, 4]

El código anterior produce el mismo resultado que la función anterior.

La función reducir():

La función reduce(), como su nombre lo describe, aplica una función determinada a los iterables y devuelve un valor único.

reduce-mapreducefilter-edureka.png

La sintaxis de esta función es la siguiente:

SINTAXIS:

reducir (función, iterables)

La función aquí define qué expresión debe aplicarse a los iterables. Esta función debe importarse desde el módulo functools. Por ejemplo:

EJEMPLO:

from functools import reduce
reduce(lambda a,b: a+b,[23,21,45,98])

PRODUCCIÓN: 187

En el ejemplo anterior, la función de reducción agrega consecutivamente cada iterable presente en la lista y devuelve una sola salida.

Las funciones map(), filter() y reduce() en Python se pueden usar juntas.

Usando las funciones map(), filter() y reduce() junto con otras:

Cuando hace esto, primero se resuelven las funciones internas y luego las funciones externas operan en la salida de las funciones internas.

Primero intentemos pasar la función filter() como parámetro a la función map().

Usando filter() dentro de map():

El código que se proporciona a continuación primero verifica que la condición (x>=3) sea verdadera para los iterables. Luego, la salida se mapea usando la función map().

EJEMPLO:

c = map(lambda x:x+x,filter(lambda x: (x>=3), (1,2,3,4)))
print(list(c))

PRODUCCIÓN: [6, 8]

Si filtra enteros mayores o iguales a 3 de la tupla dada, obtiene [3,4] como el resultado. Entonces, si mapeas esta condición usando (x+x), obtendrás [6,8]que es la salida.

Usando map() dentro de filter():

Cuando utiliza la función map() dentro de la función filter(), los iterables primero son operados por la función map y luego se les aplica la condición de filter().

EJEMPLO:

c = filter(lambda x: (x>=3),map(lambda x:x+x, (1,2,3,4))) #lambda x: (x>=3)
print(list(c))

PRODUCCIÓN: [4, 6, 8]

Usando map() y filter() dentro de reduce():

La salida de las funciones internas se reduce de acuerdo con la condición proporcionada a la función reduce().

EJEMPLO:

d = reduce(lambda x,y: x+y,map(lambda x:x+x,filter(lambda x: (x>=3), (1,2,3,4)))) 
print(d)

PRODUCCIÓN: 14

La salida es el resultado de [6,8] que es el resultado de las funciones internas map() y filter().

Con esto, hemos llegado al final de este artículo sobre las funciones map(), filter() y reduce en Python. Espero que hayas entendido todo con claridad. Asegúrate de practicar tanto como sea posible y revierte tu experiencia.

Tienes una pregunta para nosotros? Por favor, menciónelo en la sección de comentarios de este blog “Funciones map(), filter() y reduce() en Python” y nos pondremos en contacto con usted lo antes posible.

Similar Posts

Leave a Reply

Your email address will not be published.