【发布时间】:2019-10-02 15:10:58
【问题描述】:
我正在尝试在多个列表之间创建连接或模式。例如,如果列表“C”与“D”具有相同的值,而 D 与“B”具有相同的值,我想用一个新变量返回匹配值并返回不在匹配值中的值,并且创建另一个变量。如果可以做到这一点,您可以使用列表推导来解决此问题吗?另一个例子,这是我的清单
B = [[3, 21, 27], [3, 7, 21, 27], [3, 7, 21, 27],
[3, 7, 21, 27], [3, 21, 27], [7, 21, 27]]
C = [[[2, 7, 8], [4, 13, 15]],
[[2, 5, 6], [8, 11, 12]], [[4, 6, 9], [6, 10]]]
D = [[2, 3, 4, 5, 6], [2, 3, 7, 8, 9], [4, 5, 7, 8, 10],
[4, 6, 10, 16, 20], [2, 3, 12, 17, 20], [7, 11, 16, 17, 20]]
我希望我的结果是:
[[[[2, 3], [8, 2, 7, 3], [], [], [2, 3], []],[[3,4], [], [7, 4], [], [3], [7]],[[3, 2, 5, 6], [3, 7, 2 ], [7, 5], [], [3, 2], [7]],[[3], [3, 7, 8], [], [], [3, 12], [7, 11]],[[3, 4, 6], [3, 9], [], [], [], []],[], [], [7, 10], [], [], []]]]
如果可能的话,我想删除空格。
[[[[2, 3], [8, 2, 7, 3], [2, 3]],[[3,4],[7, 4],[3], [7]],[[3, 2, 5, 6], [3, 7, 2 ], [7, 5],[3, 2], [7]],[[3], [3, 7, 8],[3, 12],[7, 11]],[[3, 4, 6],[3, 9]],[[7, 10],]]]
我尝试在下面使用此代码,它有效,但仅当我尝试将“B”匹配到“D”时才有效。我试图让“C”和“B”匹配“D”
E = ([[[list(set(x) & set(y)) for x in D] for y in B]])
【问题讨论】:
-
你能提供一个干净、简单的例子吗? C、B、D 和预期输出的值是多少?
-
抱歉忘了放那个。它一直在更新。以防万一这是我的清单
B = [[3, 21, 27],[3, 7, 21, 27],[3, 7, 21, 27],[3, 7, 21, 27],[3, 21, 27],[7, 21, 27]] C = [[[2, 7, 8],[4, 13, 15]],[[2, 5, 6],[8, 11, 12]] ,[[4, 6, 9],[6,10]]] D = [[2, 3, 4, 5, 6],[2, 3, 7, 8, 9],[4, 5, 7, 8, 10],[4, 6, 10, 16, 20],[2, 3, 12, 17, 20],[7, 11, 16, 17, 20]] -
您的列表 C 比其他列表多一层嵌套,对吗?
-
是的。它仍然可以工作还是有其他方法可以解决?
标签: python python-3.x list multidimensional-array