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

如何在保持列表层级结构的前提下拼接嵌套列表中的字符串?

解决嵌套列表的同层级字符串拼接问题

我来帮你搞定这个嵌套列表的字符串拼接需求~核心目标是同一层级内的连续字符串要合并,同时完整保留原有的嵌套结构,而且要支持任意深度的嵌套,递归确实是最合适的解法,咱们来一步步捋清楚思路。

核心思路拆解

递归处理的关键是区分当前层级的元素类型,按逻辑分支处理:

  • 如果是字符串:不要直接加入结果,先临时积累起来——因为后面可能还有同层级的字符串需要拼接
  • 如果是子列表:先把之前积累的所有字符串(如果有的话)加入当前层级的结果,然后递归处理这个子列表,把递归后的子列表结果加入当前层级,最后重置临时积累的字符串
  • 遍历完当前层级所有元素后,别忘了把最后剩余的积累字符串(如果有的话)加入结果,避免遗漏末尾的连续字符串

Python 实现代码

根据这个思路,我们可以写出这样的递归函数:

def flatten_concat(nested_list):
    result = []
    current_concat = ""
    
    for element in nested_list:
        if isinstance(element, list):
            # 先把积累的字符串加入结果(如果有)
            if current_concat:
                result.append(current_concat)
                current_concat = ""
            # 递归处理子列表,把处理后的子列表加入结果
            result.append(flatten_concat(element))
        else:
            # 是字符串,追加到临时积累变量中
            current_concat += element
    
    # 遍历结束后,把剩余的积累字符串加入结果
    if current_concat:
        result.append(current_concat)
    
    return result

测试验证

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

test_list = ["a", "b", ["c", ["d", "e"], "f"]]
print(flatten_concat(test_list))
# 输出:['ab', ['c', ['de'], 'f']]

再试一个更复杂的嵌套场景,验证任意深度的处理能力:

complex_list = ["x", ["y", "z", ["m", "n", ["p"]], "q"], "r", "s"]
print(flatten_concat(complex_list))
# 输出:['x', ['yz', ['mn', ['p']], 'q'], 'rs']

完全符合预期,不管嵌套多少层都能正确处理结构和拼接逻辑。

为什么这个逻辑能work?

  • 每次递归只聚焦当前层级的元素,子列表交给递归函数处理,保证了原嵌套结构的完整性
  • 用current_concat临时积累同层级的字符串,避免了把单个字符串过早加入结果,确保连续的字符串都能被拼接成一个整体
  • 遍历结束后检查剩余的积累字符串,避免遗漏最后一组连续字符串

内容的提问来源于stack exchange,提问作者Mathias Høgden

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:07:44