【问题标题】:Python - Looking to obtain full list of permutations of Boolean valuesPython - 寻求获得布尔值排列的完整列表
【发布时间】:2021-03-30 17:37:12
【问题描述】:

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

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

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

A的outcome_type不能等于B的outcome_type,C和D、E和F都一样

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

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

如果 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)]

谢谢

【问题讨论】:

  • 第一个条件的含义不是很清楚(至少对我来说)。你说outcome_type of A must not equal outcome_type of B,但你在期望结果中的最后一个元组有(False, False, True, True...),在我看来就像A == B。
  • 是的,这是一个错字,感谢您的发现。应该是 False True False...

标签: python list boolean permutation


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 2020-08-29
  • 2020-11-11
  • 2012-04-08
  • 1970-01-01
  • 2018-02-19
  • 2016-09-28
  • 2015-01-21
  • 1970-01-01
  • 2020-09-18
相关资源
最近更新 更多