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

如何展开嵌套在列表中的子列表以提取所有元素

解决嵌套列表扁平化及itertools.chain报错问题

错误原因

itertools.chain要求传入的参数必须是可迭代对象(如列表、元组等),你传入的a、b、d、e是单个整数,不属于可迭代类型,因此触发TypeError。

针对当前代码的修复方案

把单个元素包装成单元素可迭代对象(比如单元素列表或元组),确保所有参数符合chain的要求:

from itertools import chain

a = 1
b = 2
c = [3, 4, 5]
d = 6
e = 7

# 将单个元素转为单元素列表,保证所有参数都是可迭代对象
flattened_list = list(chain([a], [b], c, [d], [e]))
print(flattened_list)  # 输出: [1, 2, 3, 4, 5, 6, 7]

通用嵌套列表扁平化方案

如果是处理你开头提到的[a, b, [c, d, e], f, g]这类嵌套列表结构,推荐用更通用的方法:

方法1:结合chain.from_iterable和生成器表达式

nested_list = [1, 2, [3, 4, 5], 6, 7]
flattened = list(chain.from_iterable(
    item if isinstance(item, list) else [item] for item in nested_list
))

方法2:列表推导式(更简洁)

nested_list = [1, 2, [3, 4, 5], 6, 7]
flattened = [x for elem in nested_list for x in (elem if isinstance(elem, list) else [elem])]

如果需要处理多层嵌套(比如[1, [2, [3, 4]]]),可以用递归函数:

def flatten(nested):
    for elem in nested:
        if isinstance(elem, list):
            yield from flatten(elem)
        else:
            yield elem

nested_list = [1, [2, [3, 4]], 5]
flattened = list(flatten(nested_list))  # 输出: [1, 2, 3, 4, 5]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:55:51