假設我有這樣的:遞歸布爾評價
[(True, False, False), True] = True
或
(False, [True, True, False], False) = False
,可能是無限深和元組評價爲手術室,並列出與運算
這個功能怎麼可能用python寫的?
假設我有這樣的:遞歸布爾評價
[(True, False, False), True] = True
或
(False, [True, True, False], False) = False
,可能是無限深和元組評價爲手術室,並列出與運算
這個功能怎麼可能用python寫的?
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
'map'渴望Python 2.x - 通過使用'itertools.imap'或一個生成器表達式'evaluate_bool(e)for e in expr',您可以保持這種懶惰。 (在Python 3.x中'map'已經很懶。) – 2013-04-08 17:05:33
@FrancisAvila你說得對,這個代碼可以通過使用生成器表達式來改進。謝謝! – 2013-04-08 17:10:37
遞歸短路穿越功能。你有嘗試過什麼嗎? – 2013-04-08 16:58:10
如果我理解正確,你想寫'X&Y'爲'[X,Y]','X | Y'爲'(X,Y)'。那(依靠類型進行評估)並不是一種Pythonic的做事方式。 – bereal 2013-04-08 17:00:13