En este tutorial, aprenderá a utilizar la función Función map() de Python para aplicar una función a todos los elementos de un iterable.
Python admite la función programación funcional que permite definir tareas como una computación de funciones mediante programación. Puedes tratar las funciones de Python como objetos: una función puede tomar otra función como parámetro y devolver otra función.
En map()
recibe una función como argumento y permite aplicarla a todos los elementos de una secuencia.
Al final de este tutorial, usted será capaz de utilizar el Python map()
para reescribir bucles verbales y comprensiones de listas. Codificarás varios ejemplos para comprender las distintas formas en que puedes utilizar la función map()
función.
Cómo aplicar una función a los elementos de una lista de Python

Empecemos con un ejemplo.👩🏫
Aquí nums
es una lista de números.
nums = [2,4,3,7]
A continuación, consideremos la función self_pow()
. La función self_pow()
toma un número como argumento y devuelve el número elevado a la potencia del propio número: n**n.
En Python, ** es el operador de exponenciación. a**b devuelve el valor de a elevado a la potencia b, ab.
def self_pow(n):
return n**n
TO-DO: Para crear una nueva lista
nums_pow
aplicando la funciónself_pow()
a cada elemento de la listanums
.
Uso del bucle for
Para ello, puede utilizar bucles for en Python:
- Para cada número del
nums
llame a la funciónself_pow()
connum
como argumento. - Añade el resultado de la llamada a la función a la nueva lista
nums_pow
.
nums_pow = []
for num in nums:
nums_pow.append(self_pow(num))
print(nums_pow)
En la salida, cada número nums
se eleva a sí mismo. Los elementos en nums_pow
de la lista son los siguientes: 22, 44, 33,77.
Output
[4, 256, 27, 823543]
Utilizar la comprensión de listas
Puede hacerlo de forma concisa utilizando comprensión de la lista. A partir del bucle for explícito anterior, podemos identificar la expresión de salida y la lista a recorrer.

A continuación, podemos modificar la expresión genérica de comprensión de la lista:
new_list = [<output expression> for item in iterable]
La expresión de comprensión de la lista para generar el nums_pow
La lista es la siguiente:
nums_pow = [self_pow(num) for num in nums]
print(nums_pow)
El resultado es el mismo que el de los bucles for, como era de esperar.
Output
[4, 256, 27, 823543]
En lugar de la comprensión de bucles y listas, puede utilizar la función de Python map()
con una sintaxis concisa que ayuda a aplicar la función a todos los elementos de un iterable. Empecemos por aprender la sintaxis de la función map.
Sintaxis de la función map() de Python

La sintaxis general para utilizar el Python map()
es la siguiente:
map(function, iterable_1,[iterable_2,...,iterable_n])
En map()
recibe como mínimo dos argumentos, a función y un iterable.
En la sintaxis anterior:
- función denota una función de Python o, en general, cualquier invocable de Python. Esto incluye funciones definidas por el usuario e incorporadas, clases, métodos de instancia y de clase, y más.
- iterable es cualquier iterable válido de Python, como una lista, tupla y cadena.
- La función map() aplica el función a cada en el iterable
¿Qué devuelve la función map()?
Devuelve un objeto map. A continuación, puede convertir el objeto map en una lista utilizando la sintaxis: list(map(function,iterable)).
Dependiendo del caso de uso, puede convertirlo en un Tupla Python.

Ahora que ya has aprendido la sintaxis de Python map()
empecemos a codificar ejemplos.
Debes tener Python 3.x para seguir este tutorial. De lo contrario, puede ejecutar los fragmentos de código en Editor de Python en línea Geekflare.
Cómo utilizar la función map() con funciones definidas por el usuario

#1. Anteriormente, habíamos aplicado el self_pow()
a cada número de la nums
lista. En la sintaxis de map()
podemos pasar la función self_pow
y la lista nums
como argumentos.
Nota: Sólo debe especificar el nombre de la función y no una llamada a la función. Utilice self_pow
y no self_pow()
.
En map()
devuelve un objeto map.
print(map(self_pow,nums))
<map object at 0x7f7d315c14d0>
A continuación, podemos convertir el objeto map en una lista utilizando la función list(), como se muestra a continuación.
nums_pow = list(map(self_pow,nums))
print(nums_pow)
Aquí está la salida donde cada num
en nums
se asigna a numnum en nums_pow
lista.
Output
[4, 256, 27, 823543]
#2. Consideremos la siguiente función inch_to_cm()
que convierte pulgadas a centímetros. 1 pulgada = 2,54 cm.
def inch_to_cm(inch):
return inch*2.54
Para convertir los valores en pulgadas del inches
a centímetros, puede utilizar la función map()
como se muestra en la siguiente celda de código.
inches = [5.54,3.4,1,25,8.2]
cms = list(map(inch_to_cm,inches))
print(cms)
En cms
contiene los valores en pulgadas expresados en centímetros.
Output
[14.0716, 8.636, 2.54, 63.5, 20.828]
Cómo utilizar la función map() con funciones incorporadas

En esta sección, aprenderemos a utilizar map()
con funciones incorporadas en Python.
#1. La lista strings
es una lista de lenguajes de programación. Desea crear una nueva lista strings_upper
que contiene las cadenas del lenguaje de programación en mayúsculas.
strings = ['JavaScript','Rust','Python','Go']
El método de cadena incorporado
.upper()
actúa sobre una cadena y devuelve una copia formateada en mayúsculas.
strings_upper = list(map(str.upper,strings))
print(strings_upper)
La lista strings_upper
incluye cadenas en la lista strings
en mayúsculas.
Output
['JAVASCRIPT', 'RUST', 'PYTHON', 'GO']
#2. La función len()
en Python toma una secuencia como argumento y devuelve su longitud. Para encontrar la longitud de cada una de las cadenas de la secuencia strings
podemos utilizar la función map()
y aplicar la función de longitud a cada cadena, como se muestra a continuación.
strings_len = list(map(len,strings))
print(strings_len)
Output
[10, 4, 6, 2]
#3. Puede utilizar el map()
con otras colecciones como las tuplas.
El siguiente ejemplo contiene una tupla con información sobre el número de dormitorios, la superficie y la ciudad en la que se encuentra una casa.
En Python, la función type()
devuelve el tipo de datos de cualquier objeto Python. Para obtener el tipo de datos de todos los elementos de esta tupla, puede utilizar la función map()
para llamar a la función type
en cada elemento de la tupla.
house = (2,758.5,'Bangalore')
house_elt_type = tuple(map(type,house))
print(house_elt_type)
Hemos convertido el objeto map en una tupla. También puedes convertirlo en una lista o cualquier otra colección.
En el siguiente resultado, vemos que los tipos de datos 2, 758.5 y Bangalore se han deducido como 'int', 'float' y 'str', respectivamente.
Output
(<class 'int'>, <class 'float'>, <class 'str'>)
#4. En Python, puede importar módulos integrados y utilizar las funciones definidas en los módulos.
Para calcular la raíz cuadrada de cada número del nums
puede utilizar la función de raíz cuadrada sqrt
del módulo matemático.
import math
nums = [30,90,34,45,97]
nums_sqrt = list(map(math.sqrt,nums))
print(nums_sqrt)
Output
[5.477225575051661, 9.486832980505138, 5.830951894845301, 6.708203932499369, 9.848857801796104]
La salida anterior es difícil de analizar y seguir. Es posible que desee redondear cada cuadrado valor de la raíz con, digamos, dos decimales.
Cómo redondear un número en coma flotante en Python
Definamos una función round_2()
que toma un valor en coma flotante y lo redondea a dos decimales.
def round_2(num):
return round(num,2)
Ahora, puede utilizar la función map()
con la función round_2
y el nums_sqrt
lista.
nums_sqrt_round = list(map(round_2,nums_sqrt))
print(nums_sqrt_round)
Output
[5.48, 9.49, 5.83, 6.71, 9.85]
También puede utilizar map()
donde la función de mapa interior se utiliza para calcular la raíz cuadrada. list nums_sqrt
y la función de mapa exterior realiza la operación de redondeo.
nums_sqrt_round = list(map(round_2,list(map(math.sqrt,nums))))
print(nums_sqrt_round)
Output
[5.48, 9.49, 5.83, 6.71, 9.85]
Los resultados son idénticos en ambos enfoques. Sin embargo, debe asegurarse de que el código sea legible y mantenible al anidar funciones como se muestra arriba.
Cómo utilizar la función map() con funciones lambda

En las secciones anteriores, aprendiste a utilizar el programa Python map()
con funciones incorporadas y definidas por el usuario. Ahora aprenderás a utilizar la función map() con funciones lambda, que son anónimas en Python.
A veces, tendrá una función cuyo cuerpo contiene sólo una línea de código, y puede que necesite utilizar la función sólo una vez y no hacer referencia a ella en ninguna otra parte del programa. Puede definir estas funciones como función lambda en Python.
Nota: lambda args: expression es la sintaxis general para utilizar un Función lambda de Python.
#1. Considere la siguiente lista strings
. Supongamos que desea obtener una lista strings_rev
- que contiene una copia invertida de cada una de las cadenas.
strings = ['JavaScript','Rust','Python','Go']
Podemos invertir una cadena Python mediante el troceado de cadenas.
Nota: Se trata de una generalización de la expresión string slicing
str[start:stop:step]
.- Sin la
start
ystop
la rebanada comienza al principio de la cadena y se extiende hasta el final de la misma.
- Los valores negativos destep
da cortes empezando por el final de la cadena.
- Por lo tanto,str[::-1]
devuelve una copia invertida de str.
Puede utilizar esta función lambda: lambda x:x[::-1]
Dentro de la función de mapa, como se muestra a continuación.
strings_rev = list(map(lambda x:x[::-1],strings))
print(strings_rev)
Como en otros ejemplos, convertimos el objeto map en una lista. En la salida, vemos que cada una de las cadenas de la lista cadenas se ha invertido.
Output
['tpircSavaJ', 'tsuR', 'nohtyP', 'oG']
#2. En la sección anterior, calculamos la raíz cuadrada de cada número de la lista de números y, a continuación, redondeamos cada valor de raíz cuadrada a dos decimales.
Utilizamos la función round_2()
para hacer esto. Reescribamos el round_2()
como una función lambda y utilizarla con la función map()
que se describe a continuación.
nums_sqrt_round_l =list(map(lambda num:round(num,2),nums_sqrt))
print(nums_sqrt_round_l)
Como se ve a continuación, la salida es idéntica a la que obtuvimos utilizando la función round_2()
función.
Output
[5.48, 9.49, 5.83, 6.71, 9.85]
Cómo utilizar la función map() con múltiples iterables

En los ejemplos que hemos visto, hemos aplicado una función sobre todos los elementos de exactamente un iterable.
A veces, podemos tener funciones que reciben dos o más argumentos. En este caso, cada argumento se almacena en una lista o cualquier colección similar.
También podemos utilizar la función map() de Python con listas múltiples.
#1. Consideremos la siguiente función area()
que acepta el length
y breadth
como entradas y devuelve el área, length*breadth
.
def area(length,breadth):
return length*breadth
La longitud y la anchura de los diferentes rectángulos se almacenan en dos listas separadas, lengths
y breadths
respectivamente.
lengths = [4,8,10,18]
breadths = [9,4,6,11]
Podemos utilizar el map()
para aplicar la función de área a las listas anteriores pasando tanto la función lengths
y breadths
listas.
areas = list(map(area,lengths,breadths))
print(areas)
Dado que la función área acepta dos argumentos, se utilizan los valores de longitud y anchura de las listas lengths
breadths
respectivamente.
Output
[36, 32, 60, 198]
#2. En Módulo matemático de Python tiene la función log que nos ayuda a calcular el logaritmo de un número en cualquier base.
Nota: log(x, base) devuelve el valor de log x a la base especificada por el valor base, Registrar base x. Si no se especifica la base, el valor base por defecto es e (log calcula el logaritmo natural).
En este ejemplo:
- La lista
x
corresponde a los valores para los que desea calcular el logaritmo. - En
base
contiene todos los valores de base que se utilizarán en el cálculo del logaritmo.
x = [2,6,12,10]
base = [2,3,2,5]
Podemos utilizar la función map() de Python con math.log
las listas, x
y base
para obtener la nueva lista log_x
como sigue.
log_x = list(map(math.log,x,base))
print(log_x)
Este es el resultado.
Output
[1.0, 1.6309297535714573, 3.5849625007211565, 1.4306765580733933]
Conclusión
Aquí tienes un resumen de lo que has aprendido en este tutorial:
- La función map() de Python recibe al menos dos argumentos: una función y un iterable, con la sintaxis map(function, iterable(s)).
- En función puede ser cualquier callable válido de Python.
- Cuando el función recoge k utilice los argumentos
map()
con la función y cada uno de los k en un iterable.
A continuación, aprenda a trabajar con conjuntos en Python. Además, aprenda a utilizar el función sleep en python.