-2

我有两个大小相同的列表,我想制作第三个列表,其中包含前两个列表的差异:

a=[1,2,3,4]
b=[2,1,3,2]

我想计算c=[a[0]-b[0],a[1]-b[1],a[2]-b[2],a[3]-b[3],] 有没有一种pythonic方法?

4

4 回答 4

7

列表理解。

[x - y for (x, y) in zip(a, b)]
于 2013-07-01T16:11:14.440 回答
5
from operator import sub

a=[1,2,3,4]
b=[2,1,3,2]

print map(sub, a, b)
# [-1, 1, 0, 2]
于 2013-07-01T16:13:01.743 回答
4

如何根据python中的函数合并两个列表?

您正在寻找zip和列表理解:

>>> a=[1,2,3,4]
>>> b=[2,1,3,2]
>>> def func(x,y):
...     return x-y
>>> c = [func(x,y) for x,y in zip(a,b)]
>>> c
[-1, 1, 0, 2]

帮助zip

zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
返回一个元组列表,其中每个元组包含第 i 个元素
从每个参数序列。返回的列表被截断
长度为最短参数序列的长度。

用于itertools.izip内存高效的解决方案,因为它返回一个迭代器。

于 2013-07-01T16:10:56.830 回答
1

您可以使用zip列表推导:

>> [x-y for (x, y) in zip(a, b)]
于 2013-07-01T16:11:28.723 回答