A map
função pode ser muito útil aqui. Usando map
podemos aplicar qualquer função a cada elemento de um iterável.
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]
>>>
Claro:
map(f, iterable)
é equivalente a
[f(x) for x in iterable]
Para que possamos obter nossa solução via:
>>> [my_mul(x,y) for x, y in zip(a,b)]
[2, 6, 12, 20]
>>>
No Python 2.x map()
significa: aplique uma função a cada elemento de um iterável e construa uma nova lista. No Python 3.x, map
construa iteradores em vez de listas.
Em vez de my_mul
podermos usar o 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 ou superior
>>> from operator import mul
>>> a = [1,2,3,4]
>>> b = [2,3,4,5]
>>> [*map(mul,a,b)]
[2, 6, 12, 20]
>>>
Observe que, como map()
constrói um iterador, usamos o *
operador de descompactação iterável para obter uma lista. A abordagem de descompactação é um pouco mais rápida que o list
construtor:
>>> list(map(mul,a,b))
[2, 6, 12, 20]
>>>