Generando todas las combinaciones posibles de longitud n de dos elementos en python

Estoy tratando de generar una lista de longitud n a partir de dos elementos posibles. Por ejemplo, un ejemplo podría ser una lista de longitud 4 que comprende ceros o unos que sería 0000, 0001, 0010, 0100, 1000, 1001, etc. Gracias de antemano, Jack

Con itertools.product :

 In [1]: from itertools import product In [2]: list(product((0, 1), repeat=4)) Out[2]: [(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 1, 1), (0, 1, 0, 0), (0, 1, 0, 1), (0, 1, 1, 0), (0, 1, 1, 1), (1, 0, 0, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0), (1, 1, 1, 1)] 

También puedes simplemente imprimir los ints como cadenas binarias:

 In [3]: for i in range(2**4): ...: print('{:04b}'.format(i)) ...: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 

Consulte la función del product en el módulo de itertools : https://docs.python.org/2/library/itertools.html#itertools.product

 from itertools import product product(range(2), repeat=4) # -->  list(product(range(2), repeat=4)) # --> [(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 1, 1), (0, 1, 0, 0), (0, 1, 0, 1), (0, 1, 1, 0), (0, 1, 1, 1), (1, 0, 0, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0), (1, 1, 1, 1)]