我需要生成一个变量长度列表,列出n长度元组的所有可能值,每个值为0或1.因此,有2 ^ n个可能的元组。例如,对于n = 3的输入,我的列表应该看起来像
a=[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0),
(1, 1, 1)]
注意:内部元素是否为元组无关紧要,方便时使用列表。如果最终列表没有按照我的例子排序也没关系。我目前可以使用for循环来完成它,但是想知道是否有一些更好,更pythony方法。这是我写的代码。
>>>>newlist=[]
>>>>for i in range(2**n):
s=bin(i)[2:] #spliced to remove the leading '0b' in the string
s='0'*(n-len(s))+s #adding extra zeroes to beginning of string
buffer=tuple(int(i) for i in s)
newlist.append(buffer)
生成我想要的列表。有什么建议以更好的,单行的方式做到吗?
答案 0 :(得分:4)
您可以使用itertools.product
,就像这样
from itertools import product
print list(product(range(2), repeat = 3))
<强>输出强>
[(0, 0, 0),
(0, 0, 1),
(0, 1, 0),
(0, 1, 1),
(1, 0, 0),
(1, 0, 1),
(1, 1, 0),
(1, 1, 1)]