Python求长度为k的0和1所有可能组合

11

我需要长度为k的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)]

我所说的“快速”是指计算速度快 :-) - Donbeo
1个回答

23

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接