计算两个列表中每个元素之间的差异

时间:2017-12-18 21:10:38

标签: python list

我想从另一个列表的每个元素计算列表的每个条目的差异。考虑两个列表A和B

A = [1,2,3,4] B=[5,6,7]

新列表c应该有12个条目

C=[1-5,1-6,1-7,2-5,2-6,2-7,....,4-7]
C=[-4,-5,-6,-3,-4,-5,....,-3]

当然这可以通过循环实现,但是有更快更有效的方法吗?我的列表A和B的尺寸为8000和2500,我必须连续做150次。 非常感谢你提前!

2 个答案:

答案 0 :(得分:1)

使用repeat

中的tilenumpy
import numpy as np

np.repeat(A,len(B))-np.tile(B,len(A))
Out[221]: array([-4, -5, -6, -3, -4, -5, -2, -3, -4, -1, -2, -3])

答案 1 :(得分:0)

您可以在一行中尝试而无需导入任何模块:

print(list(map(lambda x:list(map(lambda y:(x-y),b)),a)))

输出:

[[-4, -5, -6], [-3, -4, -5], [-2, -3, -4], [-1, -2, -3]]

或使用列表理解:

print([(i-j) for i in a for j in b])

输出:

[-4, -5, -6, -3, -4, -5, -2, -3, -4, -1, -2, -3]