0

カスタムPhylogeneticTreeクラスの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回別々に。それらを足し合わせて変数に格納する方法が必要です。

4

1 に答える 1

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)
于 2013-02-11T22:04:32.173 に答える