mathpython

リストの深さを再帰的に計算する:空のリストの扱いに注意しよう

リストがどうかを再帰的にチェックすることで、リストのネストの深さを計算できます。

入力

def depth(k):
    if not k:
        return 0
    else:
        if isinstance(k, list):
            return 1 + max(depth(i) for i in k)
        else:
            return 0

a_1 = []
a_2 = ['apple']
a_3 = ['apple', ['grape']]
a_4 = ['apple', []]
a_5 = [['apple', 'grape', 'lemon'], ['banana', ['banana', 'orange']], ['りんご', 'みかん', 'バナナ']]

print(depth(a_1))
print(depth(a_2))
print(depth(a_3))
print(depth(a_4))
print(depth(a_5))

出力

0
1
2
1
3

stack overflowのCounting depth or the deepest level a nested list goes toの回答は素晴らしい関数を紹介していますが、リストが空だったときにエラーが起きます。その問題を解消したものが上にあげたdepthという関数です。

この関数は、空のリストを深さにカウントしていません。

広告

教育総合サイト

高校化学専門サイト

色辞典

数の辞典