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

如何基于条件合并Python字符串列表中带##前缀的相邻元素

子词合并实现优化问题

问题描述

  • 给定初始字符串列表:
    stringlist = ['this', 'is', 'a', 'str', '##ing', 'list', 'for', 'ex', '##ample', 'for']
  • 需求:将以##开头的元素与其前一个元素合并,同时移除##前缀,最终期望输出结果为:
    ['this', 'is', 'a', 'string', 'list', 'for', 'example', 'for']
  • 现有实现代码:
new = []
for idx, ele in enumerate(stringlist):
    if ele.startswith('##'):
        new[-1] = new[-1] + ele[2:]
    else:
        new.append(ele)

方案解答

你现有的实现已经达到了最优时间复杂度,整体仅需遍历列表1次,时间复杂度为O(n),空间复杂度为O(n),没有多余的计算开销,运行效率足够应对绝大多数场景,包括超大输入量的处理。

如果追求更简洁的写法,可以用函数式编程的reduce实现,代码更紧凑:

from functools import reduce

result = reduce(
    lambda res, cur: res[:-1] + [res[-1] + cur[2:]] if cur.startswith('##') else res + [cur],
    stringlist,
    []
)

注意:以上两种实现都默认第一个元素不会以##开头,如果你的业务场景存在首元素就是##开头的情况,可以在逻辑最前面加边界判断处理即可,比如直接将其作为普通元素加入结果列表,或者抛出异常提示输入不合法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:09:03