La map
funzione può essere molto utile qui. utilizzandomap
possiamo applicare qualsiasi funzione a ciascun elemento di un iterabile.
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]
>>>
Ovviamente:
map(f, iterable)
è equivalente a
[f(x) for x in iterable]
Quindi possiamo ottenere la nostra soluzione tramite:
>>> [my_mul(x,y) for x, y in zip(a,b)]
[2, 6, 12, 20]
>>>
In Python 2.x map()
significa: applicare una funzione a ciascun elemento di un iterabile e costruire un nuovo elenco. In Python 3.x,map
crea iteratori anziché elenchi.
Invece di my_mul
potremmo usare mul
operatore
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]
>>>
Si noti che dal momento che map()
costruisce un iteratore utilizziamo un *
operatore iterable di decompressione per ottenere un elenco. L'approccio di decompressione è leggermente più veloce del list
costruttore:
>>> list(map(mul,a,b))
[2, 6, 12, 20]
>>>