TECH4GEEKS-LOGO-HEADER
Oxary Magazine
$10 – $15 / Week

Función Python map(), explicada con ejemplos

En este tutorial, aprenderá a utilizar el Función de mapa de Python () para aplicar una función a todos los elementos de un iterable.

Python admite la programación funcional paradigma que le permite definir tareas como un cálculo de funciones programáticamente. Puede tratar las funciones de Python como objetos: una función puede tomar otra función como parámetro y devolver otra función.

La función map() toma una función como argumento y le permite aplicarla a todos los elementos de una secuencia.

Al final de este tutorial, podrá usar la función map() de Python para reescribir bucles detallados y listas de comprensión. Codificará varios ejemplos para comprender las diferentes formas de usar la función map().

Cómo aplicar una función a elementos en una lista de Python

Aplicar una función a elementos en una lista de Python

Comencemos nuestra discusión con un ejemplo.👩‍🏫

Aquí nums es una lista de números.

nums = [2,4,3,7]

A continuación, considere 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

HACER: Para crear una nueva lista nums_pow aplicando la función self_pow() a cada elemento de la lista nums.

Usando el bucle for

Para hacer esto, puede usar bucles for en Python:

  • Para cada número en la lista nums, llame a la función self_pow() con num como argumento.
  • Agregue el resultado de la llamada de 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 de la lista nums_pow son: 22, 44, 33,77.

Output
[4, 256, 27, 823543]

Uso de la comprensión de listas

Puede hacer esto conciso usando la comprensión de listas. Desde el bucle for explícito anterior, podemos identificar la expresión de salida y la lista para iterar.

python-mapa-función-motivación

Entonces podemos modificar la expresión de comprensión de lista genérica:

new_list = [<output expression> for item in iterable]

La expresión de comprensión de lista para generar la lista nums_pow es:

nums_pow = [self_pow(num) for num in nums]
print(nums_pow)

La salida es la misma que usar bucles for, como se esperaba.

Output
[4, 256, 27, 823543]

En lugar de comprender los bucles y las listas, puede usar la función map() de Python con una sintaxis concisa que permite que la función se aplique a todos los elementos de un iterable. Empecemos aprendiendo la sintaxis de la función map.

Sintaxis de la función Python map()

Sintaxis de la función Python map()

La sintaxis general para usar el La función Python map() es la siguiente:

map(function, iterable_1,[iterable_2,...,iterable_n])

La función map() toma al menos dos argumentos, uno función Y un iterable.

  Las 10 contraseñas más comunes que deberías dejar de usar

En la sintaxis anterior:

  • función denota una función de Python o, en general, cualquier Python invocable. Esto incluye funciones definidas por el usuario e integradas, clases, métodos de instancia y clase, etc.
  • iterable es cualquier iterable de Python válido, como una lista, una tupla y una cadena.
  • La función map() aplica el función a cada elemento del iterable

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

Devuelve un objeto de mapa. Luego puede convertir el objeto de mapa en una lista usando la sintaxis: list(map(function,iterable)).

Según el caso de uso, puede convertirlo en una tupla de Python.

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

Ahora que ha aprendido la sintaxis de la función map() de Python, comencemos a codificar ejemplos.

Debe tener Python 3.x para seguir este tutorial. De lo contrario, puede ejecutar los fragmentos en el editor de Python en línea de Geekflare.

Cómo usar la función map() con funciones definidas por el usuario

Uso de la función map() con funciones definidas por el usuario

#1. Previamente, aplicamos la función self_pow() a cada número en la lista de números. En la sintaxis de la función map(), podemos pasar la función self_pow y enumerar números como argumentos.

Notar: solo necesita especificar el nombre de la función y no una llamada de función. Utilice self_pow no self_pow().

La función map() devuelve un objeto de mapa.

print(map(self_pow,nums))

<map object at 0x7f7d315c14d0>

Luego podemos transformar el objeto del mapa en una lista usando 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 la lista nums_pow.

Output
[4, 256, 27, 823543]

#2. Considere 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 valores en pulgadas de la lista de pulgadas a centímetros, puede usar la función map () como se muestra en la celda de código a continuación.

inches = [5.54,3.4,1,25,8.2]
cms = list(map(inch_to_cm,inches))
print(cms)

La lista cms contiene valores en pulgadas expresados ​​en centímetros.

Output
[14.0716, 8.636, 2.54, 63.5, 20.828]

Cómo usar la función map() con funciones integradas

Uso de la función map() con funciones integradas

En esta sección, aprenderemos a usar map() con funciones integradas en Python.

#1. La lista de cadenas es una lista de lenguajes de programación. Desea crear una nueva lista strings_upper que contenga cadenas de lenguaje de programación en mayúsculas.

strings = ['JavaScript','Rust','Python','Go']

El método de cadena .upper() incorporado opera en una cadena y devuelve una copia en formato de mayúsculas.

strings_upper = list(map(str.upper,strings)) 
print(strings_upper)

La lista strings_upper incluye cadenas en la lista de cadenas con formato en mayúsculas.

Output
['JAVASCRIPT', 'RUST', 'PYTHON', 'GO']

#2. La función len() incorporada de Python toma una secuencia como argumento y devuelve su longitud. Para encontrar la longitud de cada una de las cadenas en la lista de cadenas, podemos usar la función map() y aplicar la función de longitud en cada cadena como se muestra a continuación.

strings_len = list(map(len,strings))
print(strings_len)
Output
[10, 4, 6, 2]

#3. Puede usar la función map() con otras colecciones, como tuplas.

El siguiente ejemplo contiene una tupla que contiene información sobre el número de habitaciones, el área y la ciudad en la que se encuentra una casa.

  ArrayList en Java: una introducción para principiantes [2022]

En Python, la función type() devuelve el tipo de datos de cualquier objeto de Python. Para obtener el tipo de datos de todos los elementos de esta tupla, puede usar la función map() para llamar a la función de tipo 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 del mapa en una tupla. También puede iniciar en una lista o cualquier otra colección.

En el siguiente resultado, vemos que los tipos de datos 2, 758.5 ​​​​y Bangalore se dedujeron como ‘int’, ‘float’ y ‘str’ respectivamente.

Output
(<class 'int'>, <class 'float'>, <class 'str'>)

#4. En Python, puede importar módulos integrados y usar las funciones definidas en los módulos.

Para calcular la raíz cuadrada de cada número en la lista de números, puede usar 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]

El resultado anterior es difícil de analizar y seguir. Es posible que desee redondear cada valor de raíz cuadrada para decir, dos lugares decimales.

Cómo redondear un número de punto flotante en Python

Definamos una función round_2() que toma un valor de coma flotante y lo redondea a dos lugares decimales.

def round_2(num):
  return round(num,2)

Ahora puede usar la función map() con las listas round_2 y nums_sqrt.

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 usar funciones map() anidadas, donde la función de mapa interno se usa para calcular la lista de raíz cuadrada nums_sqrt, y la función de mapa externo 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 los dos enfoques anteriores. Sin embargo, debe asegurarse de que el código sea legible y mantenible al anidar funciones como se muestra arriba.

Cómo usar la función map() con funciones Lambda

Utilice la función map() con funciones de Lambda

En las secciones anteriores, aprendió a usar la función map() de Python con funciones integradas y definidas por el usuario. Ahora aprenderá a usar la función map() con funciones lambda, que son anónimas en Python.

A veces tendrá una función cuyo cuerpo solo contiene una línea de código, y es posible que necesite usar la función solo una vez y no hacer referencia a ella en ningún otro lugar del programa. Puede definir funciones como función lambda en Python.

Notar:lambda args:expression es la sintaxis general para usar una función lambda de Python.

#1. Considere las siguientes cadenas de lista. Suponga 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 de Python usando la división de cadenas.

Notar: Esta es una generalización de la expresión de división de cadenas str[start:stop:step].

– Sin valores iniciales y finales, el segmento comienza al principio de la cadena y se extiende hasta el final de la cadena.
– Los valores de tono negativos dan cortes desde el final de la cuerda.
– Por lo tanto, calle[::-1] devuelve una copia inversa de str.

  Cómo borrar las cookies en iPhone

Puede usar 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)

Al igual que con otros ejemplos, transformamos el objeto del mapa en una lista. En el resultado, vemos que cada una de las cadenas de la lista de cadenas se ha invertido.

Output
['tpircSavaJ', 'tsuR', 'nohtyP', 'oG']

#2. En la sección anterior, calculamos la raíz cuadrada de cada número en la lista de números, luego redondeamos cada valor de raíz cuadrada a dos lugares decimales.

Usamos la función round_2() para hacer esto. Reescribamos la función round_2() como una función lambda y usémosla 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, el resultado es idéntico al que obtuvimos con la función round_2().

Output
[5.48, 9.49, 5.83, 6.71, 9.85]

Cómo usar la función map () con múltiples iterables

Usando la función map() con múltiples iterables

En los ejemplos que hemos visto, aplicamos una función en todos los elementos de exactamente un iterable.

A veces podemos tener funciones que toman dos o más argumentos. En este caso, cada argumento se almacena en una lista o colección similar.

También podemos usar la función map() de Python con varias listas.

#1. Considere la siguiente función area() que acepta largo y ancho como entradas y devuelve el área, largo*ancho.

def area(length,breadth):
  return length*breadth

La longitud y el ancho de los diferentes rectángulos se almacenan en dos listas separadas, longitudes y anchos, respectivamente.

lengths = [4,8,10,18]
breadths = [9,4,6,11]

Podemos usar la función map() para aplicar la función de área en las listas anteriores pasando las listas de largo y ancho.

areas = list(map(area,lengths,breadths))
print(areas)

Debido a que el cuadro de función toma dos argumentos, los valores de longitud y anchura se utilizan de las listas de longitudes y anchuras, respectivamente.

Output
[36, 32, 60, 198]

#2. los 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.

Notar: registro (x, base) devuelve el valor de diario x a la base especificada por el valor base, logaritmo x. Si no se especifica la base, el valor base predeterminado es mi (log calcula el logaritmo natural).

En este ejemplo:

  • La lista x son los valores cuyo logaritmo quieres calcular.
  • La lista base contiene todos los valores base que se utilizarán en el cálculo del logaritmo.
x = [2,6,12,10]
base = [2,3,2,5]

Podemos usar la función map() de Python con math.log, listas, x y base para obtener la nueva lista log_x, de la siguiente manera.

log_x = list(map(math.log,x,base))
print(log_x)

Aquí está la salida.

Output
[1.0, 1.6309297535714573, 3.5849625007211565, 1.4306765580733933]

Conclusión

Aquí hay un resumen de lo que aprendiste en este tutorial:

  • La función map() de Python toma al menos dos argumentos: una función y un iterable, con la sintaxis map(función, iterable(s)).
  • los función puede ser cualquier llamada de Python válida.
  • Cuando el función entra k argumentos, use la función map() con la función y cada uno de los k argumentos en un iterable.

A continuación, aprenda a trabajar con conjuntos en Python.

Fuente

Etiquetas

Comparte en:

Ultimos Post

Categorias

Lorem ipsum dolor sit amet, consectetur adipiscing elit eiusmod tempor ncididunt ut labore et dolore magna

Deja una respuesta

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore