如何检测动态生成主列表的所有子列表的元素数量或长度是否一致
嵌套动态列表子项长度/字符数一致性校验方案
核心思路
无需两两比对所有子列表,仅需以第一个子列表的目标校验值作为基准,遍历剩余所有子列表逐一匹配即可,完全适配子列表数量不固定的场景。
方案1:校验所有子列表的元素数量一致
适配需要判断子列表长度是否相等的需求,附带边界校验和不匹配定位能力:
def check_sub_length_consistency(nested_list): # 主列表为空时可根据业务需求调整返回值,此处默认返回True if not nested_list: return True # 取第一个子列表长度为基准值 base_length = len(nested_list[0]) for idx, sub_list in enumerate(nested_list): current_length = len(sub_list) if current_length != base_length: print(f"索引为{idx}的子列表长度不匹配,基准值:{base_length},实际值:{current_length}") return False return True
方案2:校验所有子列表的总字符数一致
适配需要判断子列表内所有元素总字符数相等的需求,非字符串元素可自行调整转换逻辑:
def calc_sub_char_count(sub_list): # 所有元素转为字符串后统计总字符数,可根据业务调整计算规则 return sum(len(str(item)) for item in sub_list) def check_sub_char_consistency(nested_list): if not nested_list: return True base_char_count = calc_sub_char_count(nested_list[0]) for idx, sub_list in enumerate(nested_list): current_count = calc_sub_char_count(sub_list) if current_count != base_char_count: print(f"索引为{idx}的子列表总字符数不匹配,基准值:{base_char_count},实际值:{current_count}") return False return True
调用示例
针对你提到的3个子列表的测试场景:
# 测试用例:3个长度不等的子列表 test_list = [["item1", "item2", "item3"], ["item4", "item5"], ["item6", "item7", "item8", "item9"]] # 校验子列表长度 print(check_sub_length_consistency(test_list)) # 输出:索引为1的子列表长度不匹配,基准值:3,实际值:2 # 输出:False # 校验子列表总字符数 print(check_sub_char_consistency(test_list))
内容的提问来源于stack exchange,提问作者user199707
相关产品推荐
相关产品推荐

