Puede usar list comprehension, como se sugirió @Matt. también se puede utilizar itertools - más específicamente, la función 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
Como todos los funcitons itertools imap()
, devuelve un iterador. Puede generar una lista de pasarlo como un parámetro para el constructor list()
:
>>> list(imap(int.__sub__, a, b))
[0, -2, 4]
>>> list(imap(lambda m, n: m-n, a, b)) # Using lambda
[0, -2, 4]
EDITAR: Según lo sugerido por @Cat a continuación, sería mejor utilizar la función operator.sub()
con imap()
:
>>> from operator import sub
>>> list(imap(sub, a, b))
[0, -2, 4]
me gusta esta manera de hacerlo .. No puedo conseguir que funcione (no he he estado trabajando en Python durante mucho tiempo)! Lo hice: def diferencias (xs, ys): [x1-x2 para (x1, x2) en zip (xs, ys)]? –
Utilicé [np.subtract (x1, x2) para (x1, x2) en zip (List1, List2)] y funcionó! – Alex