2014-09-23 2 views
8

Мне нужны все возможные комбинации 0,1 длины k.python все возможные комбинации 0,1 длины k

Пусть к = 2 Я хочу (0,0), (0,1), (1,0), (1,1)

Я пробовал различные функции в itertools, но я не нашел то, что я хочу.

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

Быстрого я имел в виду вычислительно быстро :-) – Donbeo

ответ

15

itertools.product() принимает аргумент в repeat ключевое слово; установить его в k:

product(range(2), repeat=k) 

Демо:

>>> 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)] 
Смежные вопросы