Python如何递归统计嵌套列表中所有子列表的数量
Python统计嵌套列表子列表总数的Pythonic实现
实现思路
我们通过递归生成器遍历所有嵌套元素,遇到列表类型就计数1并继续递归遍历该列表的内部元素,最终通过内置sum函数直接对生成器输出的计数值求和,无需手动维护计数变量,逻辑简洁可读性强。
注意:该实现默认不统计传入的最外层列表本身,与题目给出的示例计算规则完全匹配。
代码实现
def count_nested_lists(lst: list) -> int: def nested_counter(obj): for item in obj: if isinstance(item, list): yield 1 yield from nested_counter(item) return sum(nested_counter(lst))
测试验证
# 例1测试 l1 = [['a', 'bb'], ['c', 'a']] print(count_nested_lists(l1)) # 输出:2 # 例2测试 l2 = [[['c', 'x'], ['g', 'ad']], [['a', 'bb'], ['c', 'a']]] print(count_nested_lists(l2)) # 输出:6
方案优势
- 采用Python原生
yield from语法简化递归逻辑,没有冗余的条件分支 - 生成器占用内存极低,即使处理深层嵌套的大列表也不会有内存溢出问题
- 完全贴合Pythonic编码风格,优先使用内置函数实现核心逻辑,可读性和可维护性更高
内容的提问来源于stack exchange,提问作者Jürgen K.
相关产品推荐
相关产品推荐

