Możesz użyć list comprehension, jak zasugerował @Matt. można również użyć itertools - dokładniej, imap()
funkcję:
>>> 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
Jak każdy itertools funcitons, imap()
zwraca iterator. Można wygenerować listę przepuszczenie go jako parametr do konstruktora 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: Jak sugeruje @Cat poniżej, byłoby lepiej, aby korzystać z funkcji operator.sub()
z imap()
:
>>> from operator import sub
>>> list(imap(sub, a, b))
[0, -2, 4]
Lubię ten sposób to zrobić .. Po prostu nie mogę zmusić go do pracy (I haven” pracowałem w Pythonie przez bardzo długi czas)! Zrobiłem to: różnice def (xs, ys): [x1-x2 dla (x1, x2) w zip (xs, ys)]? –
Użyłem [np.subtract (x1, x2) dla (x1, x2) w zip (List1, List2)] i zadziałało! – Alex