假设我有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]]
。
我有搜索谷歌,我认为模块product
中的函数itertools
可以做到这一点。但是,我不知道如何在每个组合中都没有相同的元素,也没有双重组合。
答案 0 :(得分:2)
可能是这样的:
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
相关值。
答案 1 :(得分:0)
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)