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

Python嵌套列表计数函数问题:子列表统计与元素长度校验

解决嵌套列表统计与校验问题

问题分析

P1 非列表元素引发的报错

你遇到的list(map(len, n))报错,本质是传入的嵌套列表里混了非列表类型的不可调用len的元素(比如整数),或是函数逻辑里误将非子列表元素纳入了len的调用范围。单独测试时你可能用了纯子列表的列表,但实际函数接收的参数存在不符合预期的元素。

P2 子列表长度一致性校验

要校验所有子列表元素数量一致,核心是先提取所有有效子列表的长度,再判断这些长度是否完全相同。

完整实现代码

def nlc(nested_list):
    # 统计子列表数量:仅过滤类型为list的元素
    sublist_count = sum(1 for item in nested_list if isinstance(item, list))
    
    # 提取所有子列表的长度
    sublist_lengths = [len(item) for item in nested_list if isinstance(item, list)]
    
    # 校验子列表长度是否一致
    if not sublist_lengths:
        # 无任何子列表时,默认返回True(可根据需求调整)
        length_consistent = True
    else:
        # 检查所有长度是否与第一个子列表长度一致
        length_consistent = all(length == sublist_lengths[0] for length in sublist_lengths)
    
    return sublist_count, length_consistent

# 测试用例
nl1 = [[1,2,3], [4,5,6], [7,8,9]]
nl2 = [[1,2], [3], [4,5,6], "not a list", 123]

count1, consistent1 = nlc(nl1)
print(f"nl1子列表数量:{count1},长度是否一致:{consistent1}")  # 输出:nl1子列表数量:3,长度是否一致:True

count2, consistent2 = nlc(nl2)
print(f"nl2子列表数量:{count2},长度是否一致:{consistent2}")  # 输出:nl2子列表数量:3,长度是否一致:False

关键细节补充

  1. 处理多层嵌套场景:
    如果需要统计所有层级的子列表(比如子列表里还嵌套子列表),可以改用递归统计:

    def count_all_sublists(nested_list):
        count = 0
        for item in nested_list:
            if isinstance(item, list):
                count += 1 + count_all_sublists(item)
        return count
    

    将该函数整合到nlc中即可实现深层统计。

  2. 边界情况处理:
    代码里考虑了无任何子列表的场景,避免因sublist_lengths为空导致索引报错,可根据实际需求调整该场景的返回值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:30:49