Глубина подсчета или самый глубокий уровень, в который попадает вложенный список - PullRequest
22 голосов
/ 18 мая 2011

У меня есть реальная проблема (и головная боль) с назначением ...

Я нахожусь во вводном классе программирования, и мне нужно написать функцию, которая, учитывая список, будет возвращать«максимальная» глубина доходит до ... Например: [1,2,3] вернет 1, [1, [2,3]] вернет 2 ...

Я написал этокусок кода (это лучшее, что я мог бы получить T_T)

def flat(l):
    count=0
    for item in l:
        if isinstance(item,list):
            count+= flat(item)
    return count+1

Однако, очевидно, это не работает так, как должно, потому что если есть списки, которые не учитывают максимальную глубину, они все равно повышаютсясчетчик ...

Например: когда я использую функцию с [1,2, [3,4], 5, [6], 7], она должна возвращать 2, но она возвращает 3 ...

Любые идеи или помощь будут с благодарностью ^^ большое спасибо!Я боролся с этим уже несколько недель ...

Ответы [ 11 ]

0 голосов
/ 21 сентября 2015

Краткое дополнение к сказанному, позволяющее обрабатывать и пустые списки:

def list_depth(list_of_lists):
    if isinstance(list_of_lists, list):
        if(len(list_of_lists) == 0):
            depth = 1
        else:
            depth = 1 + max([list_depth(l) for l in list_of_lists])
    else:
        depth = 0
    return depth
...