55984


前回の質問  
[要素数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]


CC BY-SA 4.0
2019-06-21T12:31:35.663
55983
2019-06-21T15:11:28.723
2019-06-21T15:11:28.723
19110
question
python python3 アルゴリズム データ構造
ヒープの深さと各深さにおける要素数から和を求めるプログラムのエラー


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


CC BY-SA 4.0
2019-06-21T12:46:47.223
55984
2019-06-21T12:46:47.223
19110
55983
answer