Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo Última actualización: 14 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

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

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ón self_pow() a cada elemento de la lista nums.

Uso del bucle for

Para ello, puede utilizar bucles for en Python:

  • Para cada número del nums llame a la función self_pow() con num 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.

python-mapa-función-motivación

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

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 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.

¿Qué devuelve la función map()?

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

Uso de 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

Uso de 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_sqrty 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

Uso de 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 y stop la rebanada comienza al principio de la cadena y se extiende hasta el final de la misma.
- Los valores negativos de step 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

Uso de 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 breadthsrespectivamente. 

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 breadthsrespectivamente.

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.loglas listas, x y base para obtener la nueva lista log_xcomo 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.

  • Bala Priya C
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba el lunes
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder