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

展平嵌套列表时触发TypeError报错,该如何修正?

解决嵌套列表展平的TypeError问题

错误原因

你的代码中,xy列表同时包含整数和子列表。当循环到整数元素时,执行for j in i会尝试遍历整数对象,但整数是不可迭代类型,因此触发TypeError: 'int' object is not iterable。

解决方案

1. 基础判断法(适配单层嵌套)

通过判断元素类型,分别处理整数和子列表:

xy = [3,5,[7,9,3,4],5,6]
flat = []
for i in xy:
    # 检查当前元素是否为列表
    if isinstance(i, list):
        # 遍历子列表并添加元素
        for j in i:
            flat.append(j)
    else:
        # 直接添加整数元素
        flat.append(i)
        
print(flat)  # 输出: [3, 5, 7, 9, 3, 4, 5, 6]

2. 递归法(适配多层嵌套)

如果你的列表存在更深层次的嵌套(比如子列表里还有子列表),可以用递归处理:

def flatten(nested_list):
    flat_list = []
    for item in nested_list:
        if isinstance(item, list):
            # 递归展平子列表,并合并到结果中
            flat_list.extend(flatten(item))
        else:
            flat_list.append(item)
    return flat_list

# 测试多层嵌套场景
xy = [3,5,[7,9,[11,13],3,4],5,6]
print(flatten(xy))  # 输出: [3, 5, 7, 9, 11, 13, 3, 4, 5, 6]

3. 列表推导式(简洁写法,适配单层嵌套)

用列表推导式简化代码逻辑:

xy = [3,5,[7,9,3,4],5,6]
flat = [j for i in xy for j in (i if isinstance(i, list) else [i])]
print(flat)  # 输出: [3, 5, 7, 9, 3, 4, 5, 6]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:01:00