如何创建不同集合中元素的组合?
How to Create Combination of Element in Different Set?
假设我有 n 个列表并且它们不相交。我想制作 n 个元素的每个组合,我从我拥有的每个列表中得到一个,但在该组合中有不同的元素并且没有双重组合。因此,[1,1,2]
是不允许的,[1,2,3]
与 [2,1,3]
相同。
例如,我有 A=[1,2,3]
、B=[2,4,1]
和 C=[1,5,3]
。所以,我想要的输出是 [[1,2,5],[1,2,3],[1,4,5],[1,4,3],[2,4,1],[2,4,5],[2,4,3],[3,2,5],[3,4,5],[3,1,5]]
.
我有搜索 google,我认为模块 itertools
中的函数 product
可以做到。但是,我不知道如何在每个组合中制作不相同的元素并且没有双重组合。
可能是这样的:
from itertools import product
A=[1,2,3]
B=[2,4,1]
C=[1,5,3]
L = list(set([ tuple(sorted(l)) for l in product(A,B,C) if len(set(l))==3 ]))
当然,如果您使用 3 个以上的列表,则必须更改 3
ot 相关值。
这个怎么样?创建一个以排序的排列为键的字典。仅当所有三个整数都不同时才接受值:
from itertools import product
A=[1,2,3]
B=[2,4,1]
C=[1,5,3]
LEN = 3
dct = {tuple(sorted(item)): item for item in product(A,B,C)
if len(set(item)) == LEN}
print(dct)
vals = list(dct.values())
print(vals)
假设我有 n 个列表并且它们不相交。我想制作 n 个元素的每个组合,我从我拥有的每个列表中得到一个,但在该组合中有不同的元素并且没有双重组合。因此,[1,1,2]
是不允许的,[1,2,3]
与 [2,1,3]
相同。
例如,我有 A=[1,2,3]
、B=[2,4,1]
和 C=[1,5,3]
。所以,我想要的输出是 [[1,2,5],[1,2,3],[1,4,5],[1,4,3],[2,4,1],[2,4,5],[2,4,3],[3,2,5],[3,4,5],[3,1,5]]
.
我有搜索 google,我认为模块 itertools
中的函数 product
可以做到。但是,我不知道如何在每个组合中制作不相同的元素并且没有双重组合。
可能是这样的:
from itertools import product
A=[1,2,3]
B=[2,4,1]
C=[1,5,3]
L = list(set([ tuple(sorted(l)) for l in product(A,B,C) if len(set(l))==3 ]))
当然,如果您使用 3 个以上的列表,则必须更改 3
ot 相关值。
这个怎么样?创建一个以排序的排列为键的字典。仅当所有三个整数都不同时才接受值:
from itertools import product
A=[1,2,3]
B=[2,4,1]
C=[1,5,3]
LEN = 3
dct = {tuple(sorted(item)): item for item in product(A,B,C)
if len(set(item)) == LEN}
print(dct)
vals = list(dct.values())
print(vals)