2014-09-23 29 views
8

Ho bisogno di tutte le combinazioni possibili di 0,1 di lunghezza k.python tutte le combinazioni possibili di 0,1 di lunghezza k

Supponiamo che k = 2 voglio (0,0), (0,1), (1,0), (1,1)

ho provato diverse funzioni in itertools ma non ho trovato quello che voglio.

>>> list(itertools.combinations_with_replacement([0,1], 2)) 
[(0, 0), (0, 1), (1, 1)] 
>>> list(itertools.product([0,1], [0,1])) #does not work if k>2 
[(0, 0), (0, 1), (1, 0), (1, 1)] 
+0

dal rapido intendevo computazionalmente veloce :-) – Donbeo

risposta

15

itertools.product() prende un argomento repeat parola chiave; impostarlo su k:

product(range(2), repeat=k) 

Demo:

>>> from itertools import product 
>>> for k in range(2, 5): 
...  print list(product(range(2), repeat=k)) 
... 
[(0, 0), (0, 1), (1, 0), (1, 1)] 
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)] 
[(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)] 
Problemi correlati