社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python使用递归查找列表的深度

Jerry Thomas • 3 年前 • 1105 次点击  

我需要使用递归找到列表的深度,但我不能使用全局变量或有多个参数。这是我的代码,但我得到了一个错误,我不能调用深度,因为我不能使用全局变量,当我在函数内部调用它时,当递归发生时,它只是重置变量

def how_deep(list_of_lists):
    for i in list_of_lists:
        if type(i) == list:
            how_deep(i)
            depth += 1
        else:
            print(depth)


if __name__ == '__main__':
    print(how_deep([[[], [], [], [[[]]]], []],))
    print(how_deep([]))
    print(how_deep([[], []]))
    print(how_deep([[[]], [], [[]], [[[]]]]))
    print(how_deep([[[[], [[]], [[[]]], [[[[]]]]]]]))
    print(how_deep([[[], []], [], [[], []]]))
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130027
 
1105 次点击  
文章 [ 1 ]  |  最新文章 3 年前
flakes
Reply   •   1 楼
flakes    3 年前

在循环浏览每个项目时,您希望记录其最大深度,并返回列表中单个子项的最大深度。你可以这样做:

def how_deep(list_of_lists):
    if not isinstance(list_of_lists, list):
        return 0
    return max(map(how_deep, list_of_lists), default=0) + 1