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

Python嵌套列表操作:如何向子列表追加指定元素实现元素归并

代码调整方案

问题根源

原代码生成拆分式嵌套列表的核心原因:

  • 每匹配到一次指定关键词,就直接执行一次list.append(sub_list)操作,没有等所有需要归入同一组的元素全部收集完成就提前入列
  • 触发append操作后强制重置sub_list为空,直接中断了后续元素的累积流程,最终把同一组内容拆成了多个独立子列表
  • 多分支判断无互斥逻辑,命中关键词的行也会错误进入else分支做无关的字符串拼接

具体修改逻辑

  • 移除所有关键词匹配分支内的提前append、重置空列表操作,把所有匹配到的元素统一累积到同一个sub_list中
  • 给所有关键词匹配判断增加分支互斥,避免命中关键词的行错误进入字符串拼接的else分支
  • 增加收集完成标记,等整个列表遍历结束、所有子列表元素都累积完成后,再一次性把组装好的sub_list存入总嵌套列表
  • 修正和Python内置类型重名的变量list,避免覆盖原生列表方法

修改后可直接运行的代码

import re

Key_word = 'Project Name'
output = ['try to find this element','element2','element3','i also try to find that']
mssg = ''
mssg2 = ''
sub_list = []
result_list = []
collect_finish = False

for line in output:
    # 匹配首个关键词,收集目标行到子列表
    if not mssg and re.search('try to find', line):
        sub_list.append(line)
        continue
    
    # 匹配Project Name关键词,拼接对应内容到子列表
    if Key_word in line:
        sub_list.append(mssg.strip())
        mssg = ''
        continue
    
    # 匹配第二个关键词,拼接对应内容到子列表,标记收集完成
    if 'i also try' in line:
        sub_list.append(mssg2.strip())
        collect_finish = True
        mssg2 = ''
        continue
    
    # 未命中任何关键词的行,按原逻辑累积字符串
    mssg = f"{mssg} {line}"

# 全部遍历完成后,一次性入列完整子列表
if collect_finish and sub_list:
    result_list.append(sub_list)

运行输出效果

最终生成的嵌套列表为[['try to find this element', 'element2 element3', 'i also try to find that']],所有需要归集的元素都在同一个子列表内,匹配预期结构要求。

额外提示:如果后续存在多组需要归集的内容,只需要在每一次collect_finish标记触发后,清空sub_list、重置标记位即可,不需要再提前执行子列表入列操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 20:54:03