ヒープの深さと各深さにおける要素数から和を求めるプログラムのエラー


前回の質問  
[要素数nのヒープの深さと各深さにおける要素数を求める方法について](https://ja.stackoverflow.com/questions/55894/%e8%a6%81%e7%b4%a0%e6%95%b0n%e3%81%ae%e3%83%92%e3%83%bc%e3%83%97%e3%81%ae%e6%b7%b1%e3%81%95%e3%81%a8%e5%90%84%e6%b7%b1%e3%81%95%e3%81%ab%e3%81%8a%e3%81%91%e3%82%8b%e8%a6%81%e7%b4%a0%e6%95%b0%e3%82%92%e6%b1%82%e3%82%81%e3%82%8b%e6%96%b9%e6%b3%95%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6)  
でいただいたコメントを参考に以下のプログラムを書き、実行しましたがエラーが出ています。

エラー

[code]

    $ python sample.py
    depth_list
    [0, 1, 2, 3]
    element
    [1, 2, 4, 1]
    Traceback (most recent call last):
      File "sample.py", line 23, in <module>
        total += depth[j]*element[j]
    TypeError: 'int' object is not subscriptable
    
[/code]

どのように修正すれば良いでしょうか。

実行プログラム

[code]

    import heapq
    import math
    a = [6, 3, 2, 4, 5, 7, 1, 8]
    heapq.heapify(a)
    
    num = int(math.log2(len(a)))
    
    depth_list = []
    for i in range(num+1):
        depth_list.append(i)
    
    print('depth_list')
    print(depth_list)
    
    
    depth = int(math.log2(len(a)))
    element= [2**x for x in range(depth)] + [len(a) - (2**depth - 1)]
    print('element')
    print(element)
    
    total = 0
    for j in range (len(depth_list)):
        total += depth[j]*element[j]
        # 0*1 + 1*2 + 2*4 + 3*1
    
    print('tolal')
    print(total)
    
[/code]




変数 `depth` はリストでなくて整数なので、`depth[j]` のように添え字をつけることはできないため生じているエラーです。




変数 `depth` はリストでなくて整数なので、`depth[j]` のように添え字をつけることはできないため生じているエラーです。

