Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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 获取给定长度内的True和False组合_Python - Fatal编程技术网

Python 获取给定长度内的True和False组合

Python 获取给定长度内的True和False组合,python,Python,我想得到n个长度的真/假组合(顺序无关紧要) 因此,如果长度为3,结果将是: [[True,True,True],[True,True,False],[True,False,False],[False,False,False]] 如果是2,那么结果是: [[True,True],[True,False],[False,False]] 我该怎么做?我尝试使用itertools.product,但它也列出了例如[True,False]和[False,True],而它应该只制作其中一个(这样切换数组中

我想得到n个长度的真/假组合(顺序无关紧要)

因此,如果长度为3,结果将是:
[[True,True,True],[True,True,False],[True,False,False],[False,False,False]]

如果是2,那么结果是:

[[True,True],[True,False],[False,False]]


我该怎么做?我尝试使用
itertools.product
,但它也列出了例如
[True,False]
[False,True]
,而它应该只制作其中一个(这样切换数组中元素的顺序就不会导致重复)。

如果输出数组中的顺序确实重要:

您需要
itertools.product
,假设您只需要各种组合:

>>> import itertools
>>> list(itertools.product([True,False], repeat=2))
[(True, True), (True, False), (False, True), (False, False)]
>>> list(itertools.product([True,False], repeat=3))
[(True, True, True),
 (True, True, False),
 (True, False, True),
 (True, False, False),
 (False, True, True),
 (False, True, False),
 (False, False, True), (False, False, False)]

我看不到用itertools实现这一点的简单方法

这里有一个简单的解决方案

def combinations(n):
    return [[True] * k + [False] * (n - k) for k in range(n + 1)]

您可以得到如下结果:

import itertools

def combination(list_,n):
    sub_result=(itertools.product(list_, repeat=n))
    return set([tuple(sorted(k)) for k in sub_result])

print(combination([True,False],3))
测试用例1:

n=2时:

{(False, True), (False, False), (True, True)}
测试用例2:

n=3时:

{(False, True, True), (True, True, True), (False, False, False), (False, False, True)}

好的,现在我们知道了您的预期输出,您尝试的代码有什么问题?这没有提供足够的信息来回答。你在做什么?请提供一些你的代码样本…请添加你已经尝试过的代码。你有你的解决方案吗?这显然不是OP想要的。第一句解释了“顺序无关紧要”,并且您的两个输出都不符合OP的期望。我喜欢这个解决方案,因为我正在寻找一种顺序确实重要的方法。