如何将两个不同长度的列表迭代在一起?

How to iterate two lists with different length together?

我得到了如下所示的两个列表:
a = [[[1,2], [3, 4], [5,6]], [[8,9],[10,11]]]
b = [[[1,2], [1,3],[2,3],[3, 4],[4,6],[5,6]],[[8,9],[9,10],[10,11]]]

两个列表中的值都是一组坐标点列表。并且你可以注意到 list a 中的一些坐标点也显示在 list b

我的目标是从 list a 的给定坐标点切出 list b,然后追加到一个新列表中。这是我期望得到的示例。

例子

list a的第一项是[[1,2], [3, 4], [5,6]],我命名为a[0],而list b的第一项是[[1,2], [1,3],[2,3],[3, 4],[4,6],[5,6]],我命名为[=22] =].因此,a[0]是一组b[0]

我想根据 a[0] 中的值将 b[0] 分割成一个看起来像 [[[1,2],[1,3],[2,3],[3,4]],[[3, 4],[4,6],[5,6]]] 的新列表。也就是说,a[0]作为b[0]的切片索引。

下面是我的代码,我不知道要执行上面的语句。

for items in a:
    c.append([])
    for i,j in zip(range(len(items)),range(len(b))):
        if i < len(items)-1:
            L_i = b[j][b[j].index(a[i]):b[j].index(a[i+1])+1]
            L_i = list(tuple(item) for item in L_i)
        elif i == len(concave_points)-1:
            temp1 = b[j][b[j].index(a[i]):]
            temp2 =b[j][0:b[j].index(a[0])+1]
            L_i = temp1 + temp2
            L_i = list(tuple(item) for item in L_i)

并且发生错误ValueError: [[1, 2], [3, 4], [5, 6]] is not in list

非常感谢。

您可以压缩列表而不是它们的长度,只需按索引对子列表进行切片

a = [[[1, 2], [3, 4], [5, 6]], [[8, 9], [10, 11]]]
b = [[[1, 2], [1, 3], [2, 3], [3, 4], [4, 6], [5, 6]], [[8, 9], [9, 10], [10, 11]]]

c = []
for aa, bb in zip(a, b):
    for i in range(len(aa) - 1):
        c.append(bb[bb.index(aa[i]):bb.index(aa[i + 1]) + 1])

print(c) # [[[1, 2], [1, 3], [2, 3], [3, 4]], [[3, 4], [4, 6], [5, 6]], [[8, 9], [9, 10], [10, 11]]]

和列表推导式一样

c = [bb[bb.index(aa[i]):bb.index(aa[i + 1]) + 1] for aa, bb in zip(a, b) for i in range(len(aa) - 1)]
a = [[1, 2], [3, 4], [5, 6]]
b = [[1, 2], [1, 3], [2, 3], [3, 4], [4, 6], [5, 6]]
union_a_b = []

a.extend(b)

for pair in a: 
    if pair not in union_a_b: 
        union_a_b.append(pair)
    else: 
        continue

print(union_a_b)