2014-09-23 14 views
8

Potrzebuję wszystkich możliwych kombinacji 0,1 długości k.python wszystkie możliwe kombinacje 0,1 długości k

Załóżmy k = 2 Chcę (0,0), (0,1), (1,0), (1,1)

Próbowałem inną funkcję w itertools ale nie mogę znaleźć to, co chcę.

>>> 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

przez szybkie Chciałem obliczeniowo szybki :-) – Donbeo

Odpowiedz

15

itertools.product() przyjmuje argumentu repeat słowa kluczowego; ustawić go 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)] 
Powiązane problemy