1. ホーム
  2. python

[解決済み] 不規則なリストの中で最も長いリストの長さを求める

2022-02-15 10:48:39

質問内容

リストのリストの中で最も長いリストを見つけなければならない。

例えば

longest([1,2,3]) は3を返す

longest([[[1,2,3]]]) も 3 を返します (内部リストは 3 です)。

longest([[], [3,[4,5],[2,3,4,5,3,3], [7], 5, [1,2,3], [3,4]], [1,2,3,4,5]]) は7を返します(リスト [3,[4,5],[2,3,4,5,3,3], [7], 5, [1,2,3], [3,4]] は7つの要素を含んでいます。)

今、私はこのコードを持っていますが、これは最初の2つの例でトリックを行うことはできません。

def longest(list1):
    longest_list = max(len(elem) for elem in list1)
    return longest_list

再帰性が役立つのでは?

どのように解決するのですか?

ここでは、任意の深さのリストに対する再帰的な解決策を紹介します。

def longest(l):
    if not isinstance(l, list):
        return 0
    return max(
            [len(l)] 
            + [len(subl) for subl in l if isinstance(subl, list)] 
            + [longest(subl) for subl in l]
            )