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

如何将扁平列表按照指定嵌套列表的结构转换为对应嵌套列表?

实现方案

核心思路是将扁平列表转为迭代器,参考模板列表l2的子列表长度,依次从迭代器中取对应数量的元素拼装为嵌套结构:

# 示例输入(将字母转为字符串避免未定义报错,实际使用可替换为你的元素类型)
l1 = ['a', 'b', 'c', 'd', 'e']
l2 = [['p', 'q'], ['r', 's', 't']]

# 核心代码
iter_l1 = iter(l1)
result = [[next(iter_l1) for _ in sub] for sub in l2]

print(result)
# 输出:[['a', 'b'], ['c', 'd', 'e']]

扩展:支持任意深度嵌套模板

如果你的l2嵌套层级不固定(比如存在3层及以上嵌套),可以用递归函数实现适配:

def reshape_flat_list(flat_list, template):
    flat_iter = iter(flat_list)
    def recursive_build(tmpl_node):
        # 如果当前模板节点是列表,递归处理子节点
        if isinstance(tmpl_node, list):
            return [recursive_build(child) for child in tmpl_node]
        # 如果是普通元素,取扁平列表的下一个元素
        return next(flat_iter)
    return recursive_build(template)

# 多层嵌套测试
l1 = [1,2,3,4,5,6,7]
l2 = [[1,2], [3, [4,5, [6,7]]]]
print(reshape_flat_list(l1, l2))
# 输出:[[1, 2], [3, [4, 5, [6, 7]]]]

注意事项

  • 请保证l1的元素总个数和l2的非列表节点总个数一致,否则会抛出StopIteration异常
  • 迭代器本身是消耗型的,多次使用需要重新从l1生成新的迭代器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:54:01