【发布时间】:2015-05-25 04:53:08
【问题描述】:
我目前正在使用 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时,为什么会返回一些东西? -
即使你想在
list上进行类型切换,这样你就不会递归到字符串、元组、字典等,你真的想要防止递归到list的子类吗? ?如果没有,请使用isinstance(lst[0], list)。 -
您能否更具体地说明您的“嵌套列表”是什么样的?它们是否包含列表以外的任何内容,还是仅包含
[[[], []], [], [[]]]之类的内容?