È possibile utilizzare list comprehension, come suggerito da @Matt. è anche possibile utilizzare itertools - più specificamente, la funzione imap()
:
>>> from itertools import imap
>>> from operator import sub
>>> a = [3,5,6]
>>> b = [3,7,2]
>>> imap(int.__sub__, a, b)
<itertools.imap object at 0x50e1b0>
>>> for i in imap(int.__sub__, a, b):
... print i
...
0
-2
4
Come tutti itertools funcitons, imap()
restituisce un iteratore. È possibile generare un elenco di passarlo come parametro per il costruttore di list()
:
>>> list(imap(int.__sub__, a, b))
[0, -2, 4]
>>> list(imap(lambda m, n: m-n, a, b)) # Using lambda
[0, -2, 4]
EDIT: Come suggerito da @Cat di sotto, sarebbe meglio utilizzare la funzione operator.sub()
con imap()
:
>>> from operator import sub
>>> list(imap(sub, a, b))
[0, -2, 4]
mi piace questo modo di farlo .. non riesco proprio a farlo funzionare (Mi rifugio' Ho lavorato in Python per un tempo molto lungo)! Ho fatto questo: differenze di def (xs, ys): [x1-x2 per (x1, x2) in zip (xs, ys)]? –
Ho usato [np.subtract (x1, x2) per (x1, x2) in zip (Lista1, Lista2)] e ha funzionato! – Alex