La map
función puede ser muy útil aquí. Usando map
podemos aplicar cualquier función a cada elemento de un iterable.
Python 3.x
>>> def my_mul(x,y):
... return x*y
...
>>> a = [1,2,3,4]
>>> b = [2,3,4,5]
>>>
>>> list(map(my_mul,a,b))
[2, 6, 12, 20]
>>>
Por supuesto:
map(f, iterable)
es equivalente a
[f(x) for x in iterable]
Para que podamos obtener nuestra solución a través de:
>>> [my_mul(x,y) for x, y in zip(a,b)]
[2, 6, 12, 20]
>>>
En Python 2.x map()
significa: aplicar una función a cada elemento de un iterable y construir una nueva lista. En Python 3.x, map
construya iteradores en lugar de listas.
En lugar de my_mul
podríamos usar mul
operador
Python 2.7
>>>from operator import mul # import mul operator
>>>a = [1,2,3,4]
>>>b = [2,3,4,5]
>>>map(mul,a,b)
[2, 6, 12, 20]
>>>
Python 3.5+
>>> from operator import mul
>>> a = [1,2,3,4]
>>> b = [2,3,4,5]
>>> [*map(mul,a,b)]
[2, 6, 12, 20]
>>>
Tenga en cuenta que, dado que map()
construye un iterador, utilizamos un *
operador de desempaquetado iterable para obtener una lista. El enfoque de desempaquetado es un poco más rápido que el list
constructor:
>>> list(map(mul,a,b))
[2, 6, 12, 20]
>>>