我有两个列表列表
A
和B
。 A
有超过 15 个子列表,并且没有与其他列表相同的长度。如果A
中的列表中有匹配值,我希望B
中的列表与B
中的列表合并。
这是一个小例子:
A = [[3,10],
[4,25,31],
[2,10]]
B = [[2,6,9,10],
[15,25,26],
[2,6,8,10],
[16,20,21]]
我希望我的结果是这样的:
C = [[[2,3,6,9,10,10]
[2,3,6,8,10,10]],
[[4,15,25,25,26,31]],
[[2,6,9,10,10],
[2,2,6,8,10,10]]]
您可以计算这些可迭代对象的笛卡尔积并检查列表的交集:
C = []
for a in A:
c = []
for b in B:
if len(set(a) & set(b)) > 0:
c.append(sorted(a + b))
if len(c) > 0:
C.append(c)
如果你想使用列表理解来获得更紧凑的东西(并且你使用的是 python >= 3.8):
C = [c for a in A if len(c := [sorted(a + b) for b in B
if len(set(a) & set(b))])]
这是使用
A
和 B
列表的输出:
[[[2, 3, 6, 9, 10, 10],
[2, 3, 6, 8, 10, 10]],
[[4, 15, 25, 25, 26, 31]],
[[2, 2, 6, 9, 10, 10],
[2, 2, 6, 8, 10, 10]]]