很抱歉标题中的描述不好。
考虑一个二维列表,如下所示:
list = [
[1, 2],
[2, 3],
[3, 4]
]
如果我要提取此列表的所有可能的“垂直”组合,总共有 2*2*2=8 个组合,它们将是以下序列:
1, 2, 3
2, 2, 3
1, 3, 3
2, 3, 3
1, 2, 4
2, 2, 4
1, 3, 4
2, 3, 4
现在,假设我删除了其中一些序列。假设我只想保留位置 #1 中的数字 2 或位置 #3 中的数字 4 的序列。然后我会留下这些序列:
2, 2, 3
2, 3, 3
1, 2, 4
2, 2, 4
1, 3, 4
2, 3, 4
问题
我想将这些剩余的序列重新组合成尽可能少的二维列表,这些列表需要包含所有序列,但不多也不少。
通过这样做,此特定示例中生成的二维列表将是:
list_1 = [
[2],
[2, 3],
[3, 4]
]
list_2 = [
[1],
[2, 3],
[4]
]
在这种特殊情况下,可以考虑生成的列表。但是,如果有数千个序列产生数百个二维列表,我该怎么办?两周来我一直在尝试提出一个好的算法,但我离令人满意的结果还差得很远。