[pyar] Explicacion - map()

Alejandro Santos listas en alejolp.com
Mie Jul 25 12:45:58 ART 2012


2012/7/25 Daniel <dmlistapython en gmail.com>:
>
> add va recibiendo en x cada elemento del seq que envía map, e y recibe
> el segundo
>
> haciendo en la primera vez
> 0,0 = 0        #  add(seq[0], seq[0]
> en la segunda
> 1,1 = 2
> en la tercera
> 2,2 = 4
>

Cuando a mí me explicaron map() lo hicieron mostrandome el código de
la función. De esta forma es mucho, mucho más fácil de entender qué
hace, porque ya deja de ser magia negra o una cuestión de fé.

La versión de map con una sola secuencia es:

def map(f, seq):
    resultado = []
    for e in seq:
        resultado.append(f(e))
    return resultado

La versión de map con dos secuencias es:

def map(f, seq1, seq2):
    resultado = []
    N = max(len(seq1), len(seq2))

    for i in range(N):
        e1, e2 = None, None
        if i < len(seq1):
            e1 = seq1[i]
        if i < len(seq2):
            e2 = seq2[i]
        resultado.append(f(e1, e2))
    return resultado

La versión con tres o más parámetros es parecida.

Entonces:

>>> def f(x, y):
...     return x + y
...
>>> map(f, [2, 3, 4], [1, 2, 3])
[3, 5, 7]

Lo que hace es sumar el primer elemento de la primer lista con el
primer elemento de la segunda lista. Despues, suma el segundo elemento
de la primer lista con el segundo elemento de la segunda lista, y
así...

-- 
Alejandro Santos



More information about the pyar mailing list