You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归实现depth_map函数:嵌套列表元素深度统计问题求助

解决方案

直接给出符合要求的递归实现代码:

def depth_map(nested_list):
    depth_dict = {}
    
    def traverse(item, current_depth):
        if isinstance(item, int):
            # 将整数添加到对应深度的列表中
            if current_depth not in depth_dict:
                depth_dict[current_depth] = []
            depth_dict[current_depth].append(item)
        elif isinstance(item, list):
            # 递归遍历子列表,深度加1
            for elem in item:
                traverse(elem, current_depth + 1)
    
    # 初始调用:从最外层列表开始,初始深度为0
    traverse(nested_list, 0)
    return depth_dict

代码解释

  1. 核心逻辑:

    • 用辅助递归函数traverse处理遍历和深度跟踪,主函数负责初始化结果字典并触发递归流程。
    • 递归终止条件:当处理的元素是int时,将其加入对应深度的列表;如果是list,则遍历每个子元素,递归调用时深度加1(子元素被多一层列表包裹)。
  2. 深度规则对应:

    • 针对示例输入[19, [[22]], [-3, [8], 47]]:
      • 19在最外层列表中,初始深度0加1后为1,对应字典键1;
      • 22被三层列表包裹(最外层→[[22]]→[22]),递归时深度从0逐步加至3,对应键3;
      • -3和47被两层列表包裹(最外层→[-3, [8], 47]),深度为2,对应键2。
  3. 函数设计准则遵循:

    • 单一职责:主函数负责初始化和返回结果,辅助函数专注于遍历与深度计算;
    • 递归逻辑清晰:每次递归仅处理当前元素类型,要么终止(处理int),要么继续递归(处理list);
    • 效率优化:结果字典在递归过程中共享,避免重复创建冗余结构。

测试验证

运行示例输入:

print(depth_map([19, [[22]], [-3, [8], 47]]))

输出:

{1: [19], 3: [22, 8], 2: [-3, 47]}

完全符合要求。

内容的提问来源于stack exchange,提问作者nima kazemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:50:40