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

Python字符串拼接与列表join性能对比及自定义字符串实现问题

Python字符串拼接与列表join的机制差异及性能对比

运行机制差异

  • Python字符串属于不可变对象,任何修改字符串的操作都会生成全新的字符串对象,伴随额外的内存申请、数据拷贝和旧对象回收开销。
    你第一种写法里虽然start和end是通过join生成的,但最终start+mid+end的拼接步骤会依次生成start+mid的临时字符串,再和end拼接得到最终结果,会产生2次不必要的临时字符串对象。
  • 列表是可变对象,列表拼接仅修改列表的元素引用,不会生成中间字符串对象;最终调用str.join()时,方法会先统计所有元素的总长度,一次性申请对应大小的内存,再把所有字符拷贝进去,全程只有一次字符串生成操作。

性能对比

  • 当n值很小时(比如你场景里n=6),两种写法的性能差异可以完全忽略,都能满足需求。
  • 当n值较大(比如过万、十万级)时,第二种列表join的写法性能明显优于第一种,随着n增大,差距会进一步拉大。

更简洁高效的实现

你可以直接初始化全点列表后修改指定位置,省去列表拼接的开销,是比你提供的两种方案性能更高的写法:

def buildstring(n, i, char):
    res = ['.'] * n
    res[i] = char
    return ''.join(res)

如果偏好字符串切片写法也可以用下面的版本,可读性更高,小n场景下性能也足够:

def buildstring(n, i, char):
    return '.' * i + char + '.' * (n - i - 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:15:01