试图找出如何做到这一点。
你有一个数字X的可变数字;我想生成不同的唯一值,其中数字只包含2个值(如0和1)。
现在,当我传递X时,我需要返回具有X位数的值以及所有组合。我将不得不进一步选择特定值,但首先我需要生成这样的值列表。
示例:
if X = 2, you get 00,11,01,10
if X = 3, you get 111,000,110,100,101,001,010 and so on
我记得在我过去的大学时代,有一种递归的方法可以解决这个问题,但到目前为止我还没有看到直接的方法。
你如何快速实现这一目标?到目前为止,我可以创建全部为0或1的值,但混合它们会导致我出现问题。
# all 0 in first positions, all 1 in second
X = 3
output = ["0"*X, "1"*X]
print(output[0]) # return 000
print(output[1]) # return 111
答案 0 :(得分:4)
>>> import itertools
>>> x = 2
>>> [''.join(i) for i in itertools.product('10', repeat=x)]
['11', '10', '01', '00']
答案 1 :(得分:1)
另一种方法(没有任何内置函数),
X = 5
for i in xrange( 2**X ):
print ('{0:0' + str(X) + 'b}').format(i)
答案 2 :(得分:0)
考虑到它是0 ..(1 ^(x + 1)-1)的二进制表示,我们可以使用它:
>>> x=2
>>> [ "{0:b}".format(i).zfill(x) for i in range(1<<x)]
['00', '01', '10', '11']
>>> x=3
>>> [ "{0:b}".format(i).zfill(x) for i in range(0,1<<x)]
['000', '001', '010', '011', '100', '101', '110', '111']