当前代码如下。它仅用于计算给定节点中某些节点的子孙级别。
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方式编写它?
答案 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)