我目前正在使用Python编写递归函数,并遇到了一些问题。如标题所示,问题是返回任意嵌套列表的最大深度。
以下是我的代码:
def depthCount(lst):
'takes an arbitrarily nested list as a parameter and returns the maximum depth to which the list has nested sub-lists.'
var = 0
if len(lst) > 0:
if type(lst[0]) == list:
var += 1
depthCount(lst[1:])
else:
depthCount(lst[1:])
else:
return var
我觉得问题出在我的递归调用上(这可能很明显)。当列表到达末尾时,它确实会返回var,但当我有一个非空列表时,事情就会出错。根本没有返回任何东西。
我切片的方式是否不正确?在递归调用之前应该做些什么?
问题也可能出在我的基本情况上。
if len(lst) > 0:
块中没有return var
时,为什么会返回某些东西? - Navithlist
上进行类型切换,以便不会递归到字符串、元组、字典等中,但你真的想防止递归到list
的子类吗?如果不是,请使用isinstance(lst[0], list)
。 - abarnert[[[], []], [], [[]]]
这样的东西? - Stefan Pochmann