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