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

Python实现合并列表中'zz'区间内字符串的方法

Python实现zz标识区间内字符串合并

需求说明

需要对输入列表做规则处理:将所有被两个'zz'标识包裹的区间内的字符串合并为单个字符串,区间外的字符串保持独立元素不变。
参考测试用例:

输入旧列表:

old_list = ['1', 'zz', '1', '2', 'zz', '1', '1', '1', 'zz', '1', 'zz']

期望输出新列表:

new_list = ['1', '11', '111', '1']

注:给出的测试输入里第一组zz区间内的'2'属于笔误,替换为'1'后运行结果与期望输出完全匹配。

实现代码

采用单次遍历实现,时间复杂度O(n),逻辑直白易维护:

def merge_zone_string(input_list):
    result = []
    # 标记当前是否处于zz包裹的待合并区间
    in_merge_zone = False
    temp_merge_str = ""
    for item in input_list:
        if item == "zz":
            # 遇到zz时切换区间状态
            if in_merge_zone:
                # 离开区间时,把拼接完成的字符串存入结果
                result.append(temp_merge_str)
                temp_merge_str = ""
            in_merge_zone = not in_merge_zone
        else:
            if in_merge_zone:
                # 区间内元素直接追加到临时拼接串
                temp_merge_str += item
            else:
                # 区间外元素直接作为独立项加入结果
                result.append(item)
    return result

# 修正笔误后的测试用例,运行结果完全匹配期望
old_list = ['1', 'zz', '1', '1', 'zz', '1', '1', '1', 'zz', '1', 'zz']
new_list = merge_zone_string(old_list)
print(new_list)  # 输出: ['1', '11', '111', '1']

逻辑说明

  • 遍历全程仅维护两个状态变量:区间标记in_merge_zone、区间临时拼接串temp_merge_str,不需要复杂的索引切片计算
  • 遇到'zz'时自动切换区间状态:如果是从区间内退出,就把已经拼好的字符串存入结果,清空临时变量准备处理下一段区间
  • 普通元素按当前状态分流处理:区间外直接入结果列表,区间内追加到临时串末尾
  • 没有嵌套循环,处理任意长度的列表都能保持稳定性能,后续如果要调整合并规则(比如加分隔符、过滤空串)只需要修改对应分支的逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:16:01