0
def nested_depth(L):
"""

>>> nested_depth([1, 2, 3])
1
>>> nested_depth([1, [2, 3], 4])
2
"""

    return (1 + max([nested_depth(x) for x in L])
            if isinstance(L, list) else 0)

この再帰コードを反復コードに変換する方法は? つまり、ループを使用する必要があり、関数自体を呼び出すことはできません。

ありがとう

4

3 に答える 3

2
>>> def maxDepth(L):
...   answer = 1
...   while L:
...     if not any(isinstance(i, list) for i in L):
...       return answer
...     answer += 1
...     L = list(itertools.chain.from_iterable([i for i in L if isinstance(i, list)]))
... 
>>> L = [1,2,3]
>>> maxDepth(L)
1
>>> L = [1,[2,3],4]
>>> maxDepth(L)
2
于 2013-11-13T03:41:58.340 に答える
1

@inspectorG4dget と同じ考え

def max_depth(L):
    ans = 0
    while L:
        L = [j for i in L for j in (i if isinstance(i, list) else [])]
        ans += 1
    return ans
于 2013-11-13T03:59:51.360 に答える