2017-03-06 6 views
1

N個の数字の集合から長さkの組み合わせを生成したいと思います。例えば、k = 3であり、N = [1,2,3]の場合、候補出力は、例えば(1,1,1)、(2,2,2)、(3,2,1) 、(1,2,3)。番号集合Nから長さkの組み合わせを生成し、順序問題、置換許可

私は、次のコード

x = list(itertools.combinations_with_replacement(range(1,4),3) 

とほぼそこだと考えている。しかし、これは順序が重要ではありません結果与えます - それは考えている。すなわち、(1、2、3)(3、2と同じです、1)、(2,3,1)など

ご迷惑をおかけして申し訳ありません。

+0

同じ出力を2回持つことに気をつけますか?ランダムである必要がありますか? – Amperclock

+1

置換は要素を繰り返さない。 – chepner

+2

デカルト製品が好きなようですね。 –

答えて

2

は、あなたの質問から、k != len(N)はので、私はあなたにそれを残す場合は、やりたいものを明確ではないが、今product

import itertools 

N = [1, 2, 3] 

y = list(itertools.product(N, N)) 
print(y) # [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)] 
      #   ^   ^
      #    |_______________| he no longer thinks it's the same 

です(スライスN多分?)

1

この試してみてください:あなたが必要なもの

import itertools 
x = [1, 2, 3] 
list(itertools.product(x, repeat=3)) 
+0

リストに入れるだけです。おそらくlist(itertools.product(x、repeat = 3))を使ってそれを行う方が良いでしょう。 – Kewl

+1

最近のバージョンのPythonでは '[* itertools.product(x、repeat = 3)]' –

関連する問題