首页 > 解决方案 > Python - 寻求获得布尔值排列的完整列表

问题描述

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

outcome_value=['A','B','C','D','E','F']
outcome_type=[True,False]

我正在寻找 True 和 False 的所有可能排列,但想指定条件,例如:

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

如果 A=True,则 C,E 必须等于 False(除了满足 B 的条件 1)

if C=True, A,E=False(除了满足 D 的条件 1)

if E=True, A,C=False(除了满足 F 的条件 1)

因此最终结果如下:

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

谢谢

标签: pythonlistbooleanpermutation

解决方案


这是样本输入吗?您只有 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]

推荐阅读