我想从另一个列表的每个元素计算列表的每个条目的差异。考虑两个列表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次。 非常感谢你提前!
答案 0 :(得分:1)
使用repeat
tile
和numpy
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]