代码之家  ›  专栏  ›  技术社区  ›  ccpizza

Python:如何基于布尔变量反转列表成员资格检查?

  •  0
  • ccpizza  · 技术社区  · 6 年前

    如何基于布尔变量反转列表成员资格检查?

    我正在寻找一种方法来简化以下代码:

    #  variables: `is_allowed:boolean`, `action:string` and `allowed_actions:list of strings`
    
    if is_allowed:
        if action not in allowed_actions:
            print(r'{action} must be allowed!')
    
    else:
        if action in allowed_actions:
            print(r'{action} must NOT be allowed!')
    

    我觉得一定有办法避免检查两次,一次 in 又一次 not in ,但找不到一个更详细的方法。

    2 回复  |  直到 6 年前
        1
  •  2
  •   kindall    6 年前

    将测试结果与 is_allowed . 然后使用 把正确的错误信息放在一起。

    if (action in allowed_actions) != is_allowed:
        print(action, "must" if is_allowed else "must NOT", "be allowed!")
    
        2
  •  1
  •   jwodder    6 年前

    考虑到你的特定代码的结构,我认为你唯一能做的改进就是存储 action in allowed_actions

    present = action in allowed_actions
    if is_allowed:
        if not present:
            print(r'{action} must be allowed!')
    
    else:
        if present:
            print(r'{action} must NOT be allowed!')