2016-12-21 3 views
1

私はn個のリストを持ち、それらは互いに素ではないとしましょう。私は、すべてのリストから1つを得る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を検索しており、機能productはモジュールitertoolsで実行できると思います。しかし、私はどのようにすべての組み合わせではなく、二重の組み合わせで同じ要素を作成するか分からない。

答えて

2

は多分のようなもの:あなたが3つの以上のリストを作業する場合、あなたが持っているでしょう。もちろん、

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 OT関連する値を変更します。

+0

'(1,2,1)'のような二重要素を持つ組み合わせがあります。 – fahadh4ilyas

+0

@ fahadh4ilyas最新バージョンをお試しいただけますか? –

+0

これで動いています。どうもありがとうございました!これは私が欲しいものです。 – fahadh4ilyas

0

これはどうですか?並べ替えられた順列をキーとしてdicitonaryを作成します。すべての3つの整数が異なる場合にのみ値を受け入れます:

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) 
関連する問題