Pythonのリストの表記で、
list = [[[0], [1, 2, 3]], [4, 5]]
の用に多重構造にして記述する場合があると思いますが、
何重になっているかを調べるメソッドや関数はありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
"[", "]" を含む文字列が要素として存在していない場合に限定されますが、再帰を直接 使わない方法を考えてみました。
(str(lst) で リストを文字列化する部分が内部では再帰処理をしていると思うけど)
pyhton3
1def max_depth(lst): 2 if len(lst) == 0: 3 return 0 4 depth, max_depth = [0, 0] 5 for c in str(lst): 6 if c == '[': 7 depth += 1 8 if max_depth < depth: 9 max_depth = depth 10 else: 11 depth -= 1 12 return max_depth 13 14print(max_depth([])) # 0 15print(max_depth([1])) # 1 16print(max_depth([[[0], [1, 2, 3]], [4, 5]])) # 3
投稿2022/03/05 00:41
総合スコア22328
0
参考情報
https://www.mathpython.com/ja/python-list-depth/ Pythonのリストの深さを再帰的に計算する:空のリストの扱いに注意しよう
投稿2022/03/05 00:23
総合スコア22328
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
既に解決済みですが、参考までにどうぞ。
python
1def nested_level(lst): 2 return ( 3 0 if not isinstance(lst, list) 4 else 1 if not lst 5 else max(nested_level(lst[0])+1, nested_level(lst[1:]))) 6 7lst = [[[0], [1, 2, 3]], [4, 5]] 8print(nested_level(lst)) 9 10# 113
投稿2022/03/03 13:22
総合スコア21118
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
Numpyだとそういうメソッドがありますが、標準関数ではわかりませんね…
len関数を使って工夫するしかないんじゃないですかね。
投稿2022/03/03 12:52
総合スコア1154
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。