python - 如何使用递归计算嵌套列表的最大长度?

标签 python list python-3.x recursion maxlength

这是计算嵌套列表中最大长度的代码。

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() 函数和递归。我该怎么办?

最佳答案

这里根本没有使用递归。递归涉及在同一方法内调用方法。执行此操作的一种方法如下。注意这里分三种情况,

  1. obj只是一个int埃格,您需要返回0
  2. objlistint更重要的是,您需要返回 len list的第g个
  3. 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/

相关文章:

python - 使此目录同步脚本检测更改并在后台运行

python - 如何使用正则表达式从两个相似的 html 类元素中提取数据?

python - Discord.py 在游戏事件中发挥作用

python - 使用 Cython 在 numpy 网格上评估 C 函数

python - 从另一个列表中删除列表项

python - 识别列表列表中的重复项并总结他们的最后一项

python - 如何使用列表 1 中元素的索引来更改列表 2 中的索引?

python - 在 pandas 中使用 lstrip 时删除多余的字符

Python 骰子脚本失败

python - 枕头保存到 BytesIO 或 StringIO KeyError : "JPG"