Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成置换_Python - Fatal编程技术网

Python 生成置换

Python 生成置换,python,Python,我需要生成一个可变长度列表,列出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循环来实现,但我想知道是否有更好的pyth

我需要生成一个可变长度列表,列出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)
这就生成了我想要的列表。有什么建议可以用一种更好的方式来做吗?

你可以这样使用

from itertools import product
print list(product(range(2), repeat = 3))
输出

你可以这样用

from itertools import product
print list(product(range(2), repeat = 3))
输出


从标题上看,itertools是你的朋友。我刚才得到的答案非常清楚地表明:从标题上看,itertools是你的朋友。我刚才得到的答案非常清楚地表明:哇。我甚至不知道这个存在。谢谢。需要阅读有关itertools模块的信息。我会接受这一点,只要它让我:Dwhoa。我甚至不知道这个存在。谢谢。需要阅读有关itertools模块的信息。我会接受这个只要它让我:D