map()es una función integrada en Python que aplica una función a todos los elementos en un iterable dado. Le permite escribir código simple y limpio sin usar bucles.

map()Función Python

La map()función toma la siguiente forma:

map(function, iterable, ...)

Acepta dos argumentos obligatorios:

  • function- Función que se llama para cada elemento de iterable.
  • iterable- Uno o más objetos que soportan la iteración. La mayoría de los objetos incorporados en Python, como listas, diccionarios y tuplas , son iterables.

En Python 3, map()devuelve un objeto de mapa con un tamaño igual al objeto iterable pasado. En python 2, la función devuelve una lista.

Veamos un ejemplo para explicar mejor cómo funciona la map()función. Digamos que tenemos una lista de cadenas y nos gustaría convertir cada elemento de la lista en mayúsculas.

Una forma de hacer esto es usar el for bucle tradicional:

directions = ["north", "east", "south", "west"]
directions_upper = []

for direction in directions:
    d = direction.upper()
    directions_upper.append(d)

print(directions_upper)
['NORTH', 'EAST', 'SOUTH', 'WEST']

Con map()la función, el código será mucho más simple y flexible.

def to_upper_case(s):
    return s.upper()

directions = ["north", "east", "south", "west"]

directions_upper = map(to_upper_case, directions)

print(list(directions_upper))

Estamos usando el list()constructor para convertir el objeto de mapa devuelto en una lista :

['NORTH', 'EAST', 'SOUTH', 'WEST']

Si la función de devolución de llamada es simple, la forma más pitónica es usar una función lambda:

directions = ["north", "east", "south", "west"]

directions_upper = map(lambda s: s.upper(), directions)

print(list(directions_upper))
Una función lambda es una pequeña función anónima.

Aquí hay otro ejemplo que muestra cómo crear una lista de números cuadrados del 1 al 10:

squares = map(lambda n: n*n , range(1, 11))
print(list(squares))
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
La range() función genera una secuencia de enteros.

Uso map()con múltiples iterables

Puede pasar tantos iterables como desee a la map()función. El número de argumentos de entrada requeridos que acepta la función de devolución de llamada debe ser el mismo que el número de iterables.

El siguiente ejemplo muestra cómo realizar una multiplicación por elementos en dos listas:

def multiply(x, y):
  return x * y

a = [1, 4, 6]
b = [2, 3, 5]

result = map(multiply, a, b)

print(list(result))
[2, 12, 30]

El mismo código, pero usando la función lambda se verá de esta manera:

a = [1, 4, 6]
b = [2, 3, 5]

result = map(lambda x, y: x*y, a, b)

print(list(result))

Cuando se proporcionan varios iterables, el tamaño del objeto devuelto es igual al iterable más corto.

Veamos un ejemplo cuando los iterables no tienen la misma longitud:

a = [1, 4, 6]
b = [2, 3, 5, 7, 8]

result = map(lambda x, y: x*y, a, b)

print(list(result))

Los elementos sobrantes (7 y 8) se ignoran:

[2, 12, 30]

Conclusión

La map()función de Python toma un objeto iterable, junto con una función y aplica esa función a cada elemento en el iterable.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.