我想在 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]
,而它应该只生成其中一个(因此切换数组中元素的顺序不会导致结果重复)。
答案 0 :(得分:2)
我没有看到使用itertools实现这一目标的简单方法。
这是一个简单的解决方案
def combinations(n):
return [[True] * k + [False] * (n - k) for k in range(n + 1)]
答案 1 :(得分: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))
Test_case 1:
,n = 2:
{(False, True), (False, False), (True, True)}
test_case 2:
,n = 3:
{(False, True, True), (True, True, True), (False, False, False), (False, False, True)}
答案 2 :(得分:0)
您需要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)]