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

问题描述 投票:0回答:2

我想计算一个列表的每个条目与另一个列表的每个元素的差异。考虑两个列表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次。非常感谢你提前!

python list
2个回答
1
投票

通过使用来自repeattilenumpy

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])

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]
© www.soinside.com 2019 - 2024. All rights reserved.