我将为自定义的Phylogenetic Tree类实现一个length方法,以便我们可以在其上调用len(TreeObject)。树的长度由它有多少叶子定义。叶子表示节点没有子节点。 'self.children'等于该节点子节点的元组(节点,权重)列表。我相信我非常接近:
def __len__(self):
# everytime it reaches the base case I should add 1
if self.isLeaf():
print('base case - reached leaf!')
return 1
for t,w in self.children:
print('not leaf so sent through loop')
numLeaves = len(t)
return numLeaves
代码到达if语句的次数正确,例如如果长度为3则输出“基本情况 - 到达叶子!” 3个单独的时间。我只需要一种方法将它们加在一起并将其存储在变量中。
答案 0 :(得分:2)
确实非常接近。你只是覆盖numLeaves
而不是总结它们:
numLeaves = 0
for t,w in self.children:
print('not leaf so sent through loop')
numLeaves += len(t)
它也可以不同的方式实现:
sum(len(t) for (t,w) in self.children)