map

Nombre completo
map
Librería
Built-in
Sintaxis

map(function, iterable [, iterable...])

Descripción

La función map aplica una función a los valores del iterable que se indique como argumento. En el caso de que se indiquen dos o más iterables como argumentos, la función considerará sus valores en paralelo, dejando de devolver valores en cuanto se alcance el final del iterable más corto (véanse ejemplos más adelante).

Parámetros
  • function: Función a aplicar a los elementos del iterable.
  • iterable: Iterable a cuyos elementos se aplicará la función.
Resultado

La función map devuelve un iterable.

Ejemplos

Si partimos de un iterable como, por ejemplo, una lista:

a = [1, 2, 3, 4]

...podemos aplicarle una función que eleve al cuadrado sus valores con el siguiente código:

def squared(n):
    return n ** 2

map(squared, a)

<map at 0x237f6fe50a0>

Como vemos, el resultado es un objeto de tipo map:

type(map(squared, a))

map

Si queremos visualizar su contenido podemos convertirlo en, por ejemplo, una lista:

list(map(squared, a))

[1, 4, 9, 16]

En un caso como el anterior resulta mucho más práctico definir la función como función lambda directamente como argumento de map:

list(map(lambda n: n** 2, a))

[1, 4, 9, 16]

Si la función map recibe dos o más iterables como argumentos, aplicará la función indicada a los elementos de los iterables en paralelo. Por ejemplo, supongamos que partimos de las siguientes dos listas:

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

Si queremos sumar sus valores dos a dos, podemos hacerlo definiendo una función que reciba dos valores y devuelva su suma, y usar esta función como primer argumento de map:

def addition(m, n):
    return m + n

list(map(addition, a, b))

[3, 6, 9, 12]

Como podemos ver, el resultado se ha calculado sumando el primer elemento de "a" con el primer elemento de "b", el segundo de "a" con el segundo de "b", etc.

Nuevamente, también aquí podríamos optar por utilizar una función lambda como primer argumento:

list(map(lambda m, n: m + n, a, b))

[3, 6, 9, 12]

Si los iterables incluidos como argumentos no tienen el mismo número de elementos, la función map aplica la función en paralelo hasta alcanzar el final del iterable más corto.

Por ejemplo, si partimos de las siguientes tres listas con 5, 3 y 4 elementos respectivamente:

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

...y aplicamos una función que, por ejemplo, sume sus elementos:

list(map(lambda m, n, r: m + n + r, a, b, c))

[4, 8, 13]

...comprobamos que solo de devuelven valores para los primeros tres elementos.

Enviado por admin el Jue, 14/01/2021 - 17:07