{{1}}
嵌套列表是如此令人困惑的追踪,我以为我有它但我错了。这返回3并且应该返回4给出的示例。我是在正确的轨道上吗?有没有更好/更简单的方法来做到这一点?是否有一个小的修复程序可以使我的功能工作?
答案 0 :(得分:2)
你可以想到这样的问题:
因此,您需要处理三种情况,第三种情况涉及查找列表中每个元素的嵌套级别的最大结果。
如果你说服自己这是一套有效的规则(通过手工测试一些输入),你应该可以很简单地将它转换成Python函数。
答案 1 :(得分:0)
这是一个Python版本,密切关注已经给出的评论和答案:
<link rel="stylesheet" href="https://npmcdn.com/react-bootstrap-table/dist/react-bootstrap-table-all.min.css">
答案 2 :(得分:0)
你需要递归每个列表中所有的项目,并选择你找到的最大嵌套:
def nest_level(lst):
if not isinstance(lst, list):
return 0
if not lst:
return 1
return max(nest_level(item) for item in lst) + 1
如果你不能在递归步骤中使用内置max
函数,你可以自己找到最大值:
max_level = nest_level(lst[0])
for item in lst[1:]:
level = nest_level(item)
if level > max_level:
max_level = level
return best + 1
如果你想坚持一个没有显式循环的纯粹递归实现,你也可以这样做:
def nest_level(lst):
if not isinstance(lst, list):
return 0
if not lst:
return 1
return max(nest_level(lst[0]) + 1, nest_level(lst[1:]))
该版本也可以在没有max
的情况下完成:
def nest_level(lst):
if not isinstance(lst, list):
return 0
if not lst:
return 1
first_level = nest_level(lst[0]) + 1
rest_level = nest_level(lst[1:])
return first_level if first_level >= rest_level else rest_level