如何以pythonic方式重写此代码?

时间:2018-09-20 19:44:42

标签: python tree

当前代码如下。它仅用于计算给定节点中某些节点的子孙级别。

def count_level(self, node, given_node)
    parent_node = node
    descendant_level = 1
    while parent_node != given_node:
        parent_node = parent_node.parent
        descendant_level += 1
    return descendant_level

如何以pythonic方式编写它?

1 个答案:

答案 0 :(得分:3)

我认为您的代码非常好,除非您从不检查是否已找到根目录,这意味着您可能会陷入while循环中。实现它的另一种方法将是递归的。我删除了self,因为它从未使用过,并添加了根检查。

def count_level(node, given_node,root):
    if node.parent==root:
       return 1
    elif node.parent==given_node:
       return 1
    else:
       return 1+count_level(node.parent,given_node,root)