n
Python では、バイナリ値0
とのすべての組み合わせを取得するにはどうすればよい1
ですか?
たとえばn = 3
、私がしたい場合
[ [0,0,0], [0,0,1], [0,1,0], [0,1,1], ... [1,1,1] ] #total 2^3 combinations
これどうやってするの?
n
Python では、バイナリ値0
とのすべての組み合わせを取得するにはどうすればよい1
ですか?
たとえばn = 3
、私がしたい場合
[ [0,0,0], [0,0,1], [0,1,0], [0,1,1], ... [1,1,1] ] #total 2^3 combinations
これどうやってするの?
import itertools
lst = list(itertools.product([0, 1], repeat=3))
これにより、タプルのリストが生成されます (こちらを参照)
これを変数を使用するように簡単に変更できますrepeat
。
n = 3
lst = list(itertools.product([0, 1], repeat=n))
リストのリストが必要な場合は、map
関数を使用できます(@Aestheteに感謝します)。
lst = map(list, itertools.product([0, 1], repeat=n))
または Python 3 の場合:
lst = list(map(list, itertools.product([0, 1], repeat=n)))
# OR
lst = [list(i) for i in itertools.product([0, 1], repeat=n)]
または リスト内包表記を使用すると、オブジェクトmap
を反復処理してリストを生成するため、製品をリストに変換する必要がないことに注意してください。itertools.product
組み込み関数やスマートなテクニックを使用しなくても、このようにすることができます。
def per(n):
for i in range(1<<n):
s=bin(i)[2:]
s='0'*(n-len(s))+s
print (map(int,list(s)))
per(3)
出力
[0, 0, 0]
[0, 0, 1]
[0, 1, 0]
[0, 1, 1]
[1, 0, 0]
[1, 0, 1]
[1, 1, 0]
[1, 1, 1]
以下は、そのようなすべての組み合わせを提供します
bin = [0,1]
[ (x,y,z) for x in bin for y in bin for z in bin ]