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

如何检查嵌套列表的对称性?附示例说明

检查嵌套列表的对称性

根据你给出的示例,这里的“对称性”指的是嵌套列表在每一层级上,所有元素的结构完全一致——具体来说:

  • 同一列表内的所有元素,要么都是非列表类型(且类型相同),要么都是列表类型
  • 若为列表类型,所有子列表的长度必须相同,且子列表的对应位置元素也满足结构一致的要求(递归生效)

实现思路

  1. 先定义辅助函数,用于检查两个元素的结构是否一致:
    • 若两者都不是列表,只需类型相同即可
    • 若一个是列表一个不是,直接判定结构不一致
    • 若都是列表,先检查长度是否相同,再递归检查每个对应位置的元素结构
  2. 主函数遍历列表的所有元素,以第一个元素为基准,检查其余元素是否和基准结构一致
  3. 递归检查每个子元素的结构对称性

代码实现(Python)

def has_same_structure(a, b):
    # 非列表元素:类型相同则结构一致
    if not isinstance(a, list) and not isinstance(b, list):
        return type(a) == type(b)
    # 一个是列表一个不是,结构不匹配
    if isinstance(a, list) != isinstance(b, list):
        return False
    # 列表长度不同,结构不匹配
    if len(a) != len(b):
        return False
    # 递归检查每个对应位置的元素结构
    for elem_a, elem_b in zip(a, b):
        if not has_same_structure(elem_a, elem_b):
            return False
    return True

def is_nested_symmetric(lst):
    # 非列表元素自身结构对称
    if not isinstance(lst, list):
        return True
    # 空列表或单元素列表直接对称
    if len(lst) <= 1:
        return True
    # 以第一个元素为基准,检查所有其他元素的结构
    base_structure = lst[0]
    for elem in lst[1:]:
        if not has_same_structure(base_structure, elem):
            return False
    # 递归检查每个子元素的对称性
    for elem in lst:
        if not is_nested_symmetric(elem):
            return False
    return True

示例验证

用你给出的测试用例验证:

  1. 对称案例1
test1 = [[[0], [2]], [[0], [2]], [[0], [2]]]
print(is_nested_symmetric(test1))  # 输出 True

外层所有子列表结构一致,每个子列表的内部元素也都是结构一致的列表,符合对称要求。

  1. 不对称案例1
test2 = [[[0], [2]], [[0], [2, 2]], [[0], [2]]]
print(is_nested_symmetric(test2))  # 输出 False

中间子列表的第二个元素是长度为2的列表,和其他子列表的对应元素(长度为1的列表)结构不一致,判定为不对称。

  1. 对称案例2
test3 = [[0,1,2], [3,4,5]]
print(is_nested_symmetric(test3))  # 输出 True

外层两个子列表都是长度为3的数字列表,结构完全一致,符合对称要求。

  1. 不对称案例2
test4 = [[[2, [3]]]]
print(is_nested_symmetric(test4))  # 输出 False

最内层列表的元素一个是数字、一个是列表,结构不匹配,判定为不对称。

  1. 对称案例3
test5 = [[[[2], [3]]]]
print(is_nested_symmetric(test5))  # 输出 True

最内层的两个子列表都是长度为1的数字列表,结构一致;外层所有层级的元素结构也都匹配,符合对称要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:52:13