Python-希望获得布尔值排列的完整列表

Python-希望获得布尔值排列的完整列表,python,list,boolean,permutation,Python,List,Boolean,Permutation,我有以下采用布尔值的变量列表: outcome_value=['A','B','C','D','E','F'] outcome_type=[True,False] 我正在寻找所有可能的真与假排列,但希望指定以下条件: A的结果类型不得等于B的结果类型,C和D、E和F的结果类型相同 如果A=真,那么C,E必须等于假(除了也满足B的条件1) 如果C=真,A,E=假(除了也满足D的条件1) 如果E=真,A,C=假(除满足F的条件1外) 因此,最终结果如下: [(True, False, False,

我有以下采用布尔值的变量列表:

outcome_value=['A','B','C','D','E','F']
outcome_type=[True,False]
我正在寻找所有可能的真与假排列,但希望指定以下条件:

A的结果类型不得等于B的结果类型,C和D、E和F的结果类型相同

如果A=真,那么C,E必须等于假(除了也满足B的条件1)

如果C=真,A,E=假(除了也满足D的条件1)

如果E=真,A,C=假(除满足F的条件1外)

因此,最终结果如下:

[(True, False, False, True ,False ,True), (False, True, False, False, False ,True), (False, True, False, True, True, False)]

谢谢

这是示例输入吗?您只有6个变量,2^6=64。只要看看所有64种可能性,并放弃那些不符合你的标准

[(A, B, C, D, E, F) 
    for A, B, C, D, E, F in itertools.product((True, False), repeat=6)
    if A != B and C != D and E != F
    # Your last three rules are that at most one of A, C, and E are true
    if A + C + E <= 1]
[(A、B、C、D、E、F)
对于itertools.product中的A、B、C、D、E、F((真、假),重复=6)
如果A!=B和C!=D和E!=F
#最后三条规则是A、C和E中最多有一条是真的

如果A+C+E,第一个条件的含义并不明确(至少对我而言)。你说A的
output\u类型不能等于B的output\u类型
,但你期望结果中的最后一个元组有
(False,False,True,True…)
在我看来像是A==B。是的,这是一个输入错误,谢谢你的发现。应该是False-True-False…,所以我建议使用常规循环,而不是这个可怕的列表组合。