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

单参数递归函数实现嵌套列表深度计算及make_list_structure功能解释

解决方案

一、嵌套空列表深度计算函数实现

实现规则说明

  • 仅接收1个待检测列表作为输入参数
  • 不使用isinstance/max/map等限制语法
  • 深度定义:空列表[]深度为1,包含子列表的列表深度为子列表最大深度+1

代码实现

def how_deep(lst):
    # 初始化当前子列表的最大深度为0
    max_child_depth = 0
    # 遍历列表中每个子元素
    for item in lst:
        # 递归计算子列表深度
        current_depth = how_deep(item)
        # 手动对比更新最大深度,替代内置max函数
        if current_depth > max_child_depth:
            max_child_depth = current_depth
    # 当前列表深度 = 子列表最大深度 + 1
    return max_child_depth + 1

测试用例验证

你提供的测试用例运行结果依次为:

6
1
2
4
7
3

完全符合深度计算逻辑,未使用任何限制语法。


二、make_list_structure函数详细讲解

这个函数的作用是生成指定最大深度的随机嵌套列表结构,用来批量测试你的深度计算函数,避免手动构造测试用例的麻烦。

逐行逻辑说明

import random

def make_list_structure(max_depth, p=.8):
   # 终止条件1:当前层级还有剩余深度,且随机概率命中才生成新列表
   # p值随着递归深度增加而降低,越深的层级越难生成新列表
   if max_depth and random.random() < p:
       new_list = []
       # 每个层级最多生成5个子元素
       for i in range(5):
           # 递归生成下一层子结构,深度减1,生成概率乘以0.9
           sub_list = make_list_structure(max_depth - 1, p * .9)
           # 只有子结构返回列表(不是None)才加入当前列表
           if sub_list is not None:
               new_list.append(sub_list)
       return new_list

   # 终止条件2:深度用尽或概率未命中,返回None,不会被加入上层列表
   return None

使用示例

调用make_list_structure(5)就会生成一个最大嵌套深度不超过5的随机嵌套列表,每次运行生成的结构都不同,方便测试你的how_deep函数在各种随机场景下的正确性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:04