递归布尔评估

时间:2013-04-08 16:55:07

标签: python

假设我有类似的东西:

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

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

可能无限深,元组被评估为OR并列出ANDs

如何用python编写这个函数?

1 个答案:

答案 0 :(得分:1)

包含allany的解决方案:

def evaluate_bool(expr):
    if isinstance(expr, list):
        return all(evaluate_bool(e) for e in expr)
    elif isinstance(expr, tuple):
        return any(evaluate_bool(e) for e in expr)
    else:
        return expr

evaluate_bool([(True, False, False), True]) # True
evaluate_bool((False, [True, True, False], False)) # False