如何用递归结合for循环遍历动态嵌套列表并输出数据?
嵌套列表递归遍历实现方案
需求背景
需要遍历结构动态变化的嵌套列表(类节点树结构),替代手动索引的繁琐方式,仅通过递归+for循环实现,输出格式需与手动遍历示例一致,用于装配流程的元素输出。
实现思路
- 递归终止条件:当遍历到的元素不是列表类型时,直接输出该元素。
- 递归核心逻辑:遇到列表类型时,先输出当前列表的长度,再通过for循环遍历列表内每个元素——若元素是子列表则递归调用处理函数,若为普通元素则直接打印。
- 顶层列表处理:单独输出最外层列表的长度后,再启动遍历逻辑。
代码实现
my_list = [ "C0", "C1", ["A0-C0","A0-C1","A0-C2", ["A01-C0","A01-C1"], ["A02-C0"], ["A03-C0","A03-C1","A03-C2","A03-C3"]], ["A1-C0","A1-C1","A1-C2","A1-C3","A1-C4", ["A10-C0"], ["A11-C0","A11-C1"] ] ] def traverse_nested_list(lst): # 输出当前列表的大小 print(f"\nlist - size: {len(lst)}") # 用for循环遍历所有元素 for item in lst: if isinstance(item, list): # 子列表则递归处理 traverse_nested_list(item) else: # 普通元素直接输出 print(item) # 先处理顶层列表的大小 print(f"my_list size: {len(my_list)}\n") # 遍历顶层元素 for item in my_list: if isinstance(item, list): traverse_nested_list(item) else: print(item)
输出验证
运行代码后,输出结果与手动遍历示例完全一致:
my_list size: 4 C0 C1 list - size: 6 A0-C0 A0-C1 A0-C2 list - size: 2 A01-C0 A01-C1 list - size: 1 A02-C0 list - size: 4 A03-C0 A03-C1 A03-C2 A03-C3 list - size: 7 A1-C0 A1-C1 A1-C2 A1-C3 A1-C4 list - size: 1 A10-C0 list - size: 2 A11-C0 A11-C1
补充说明
- 全程仅使用for循环实现遍历,未使用其他循环结构,符合需求限制。
- 递归逻辑自动适配任意深度的嵌套列表,无需手动修改索引,完全支持动态变化的列表结构。
内容的提问来源于stack exchange,提问作者BadRobot
相关产品推荐
相关产品推荐

