Как получить всю комбинацию n двоичного значения? - программирование
Подтвердить что ты не робот

Как получить всю комбинацию n двоичного значения?

В Python, как я могу получить все комбинации двоичных значений n 0 и 1?

Например, если n = 3, я хочу иметь

[ [0,0,0], [0,0,1], [0,1,0], [0,1,1], ... [1,1,1] ]  #total 2^3 combinations

Как я могу это сделать?

4b9b3361

Ответ 1

Используйте itertools.product

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 и создавать список.

Ответ 2

Без использования каких-либо встроенных функций или умных методов мы можем получить как это

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]

Ответ 3

Следующее даст вам все такие комбинации

bin = [0,1]
[ (x,y,z) for x in bin for y in bin for z in bin ]