2014-09-23 25 views
8

Tüm olası 0,1 k'lik kombinasyonlara ihtiyacım var.python 0,1 uzunluğundaki tüm olası kombinasyonlar k

varsayalım k = 2 Ben itertools farklı işlevi denedi ama ben ne istediğimi bulamadık (0,0), (0,1), (1,0), (1,1)

istiyorum.

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

Ben hesaplama hızlı :-) demek – Donbeo

cevap

15

itertools.product() bir repeat kelime argüman alır; k olarak ayarlayın:

product(range(2), repeat=k) 

Demo: Hızlı tarafından

>>> 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)] 
İlgili konular