这是计算嵌套列表中最大长度的代码。
def max_length(obj):
"""
Return the maximum length of obj or any of its sublists, if obj is a list.
otherwise return 0.
@param object|list obj: object to return length of
@rtype: int
>>> max_length(17)
0
>>> max_length([1, 2, 3, 17])
4
>>> max_length([[1, 2, 3, 3], 4, [4, 5]])
4
"""
if isinstance(obj,int):
return 0
else:
return max([len(x) for x in obj])
代码是错误的,因为我不知道如何正确组合 len()
函数和递归。我该怎么办?
最佳答案
这里根本没有使用递归。递归涉及在同一方法内调用方法。执行此操作的一种方法如下。注意这里分三种情况,
- 当
obj
只是一个int
埃格,您需要返回0
- 当
obj
是list
与int
更重要的是,您需要返回len
list
的第g个 - 当
obj
是异类list
,您需要递归。
代码示例可以是
>>> def max_length(obj):
... if isinstance(obj,int):
... return 0
... elif all(isinstance(i,int) for i in obj):
... return len(obj)
... else:
... return max(max_length(i) for i in obj)
...
>>> max_length(17)
0
>>> max_length([1, 2, 3, 17])
4
>>> max_length([[1, 2, 3, 3], 4, [4, 5]])
4
关于python - 如何使用递归计算嵌套列表的最大长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35757034/