Python:缩短 If / Elif 控制流树(打印非 None 的最高顺序字符串)



在Python中,我将编写一堆规则,在树层次结构中打印出"最高顺序"。

level_1是最低的,level_3是最高顺序。

应打印可用的"最高订单"。只有level_3 None,我们才会继续测试打印level_2,等等。

level_1 = "Trunk"
level_2 = "Branch"
level_3 = "Leaf"
if level_3 is not None:
    print level_3
elif level_2 is not None:
    print level_2
elif level_1 is not None:
    print level_1
>>> "Leaf"

问题:

有没有办法在 Python 中简化这段代码?理想情况下,尽可能少的行。

我的意思是,缩短代码长度(问题不在于针对不同情况部署代码,因为它可以放在一个函数中并多次使用)。

假设没有字符串为空,您可以使用or

print level_3 or level_2 or level_1

这将适用于任何非空字符串的集合,因为or返回最后一个真值。

怎么样

for msj in (level_3,level_2,level_1):
    if msj:
        print msj
        break

或罗伊特溶液的变体

msj = level_3 or level_2 or level_1
if msj:
    print msj

两种解决方案都将打印他们遇到的第一个非空和非无元素

如果您以正确的顺序(类似于堆)在数组中插入规则,则很容易获得最高的规则。

最新更新