推荐日常用 f-string,批量拼接用 str.join();因字符串不可变,+ 拼接时间复杂度 o(n²),join() 为 o(n),小量时性能相近,大量或循环中必须避免 +=。

字符串拼接用 str.join() 比用 + 快得多,尤其在拼接大量字符串时。根本原因在于 Python 字符串不可变,+ 每次都会新建对象、复制内容,时间复杂度接近 O(n²);而 join() 一次性预估总长度、分配内存、逐个拷贝,时间复杂度为 O(n)。
小量拼接(2–3 个字符串):+ 和 f-string 差距不大
当只有两三个短字符串时,+ 或 f-string(如 f"{a}{b}{c}")写起来简洁,解释器优化后性能几乎没差别,可读性反而更好。
- 推荐场景:模板化输出、日志拼接、参数简单组合
- 避免写成
a + b + c + d + e连加(仍会逐次创建中间字符串) - f-string 是目前最推荐的日常拼接方式(Python 3.6+)
中到大量拼接(10+ 字符串或循环内拼接):必须用 join()
比如从列表生成 CSV 行、拼接多行 HTML、构建 SQL 查询等。用 + 在循环里累积拼接,性能会急剧下降。
- 错误示范:
s = ""然后for x in items: s += x - 正确做法:
" ".join(items)或"\n".join(lines) - 注意:
join()要求所有元素是字符串,非字符串需先转:map(str, numbers)
内存与可读性的平衡技巧
有时候逻辑复杂,不能直接把所有片段放进一个列表。这时可先收集到 list,再 join —— 既保持线性时间,又不影响结构清晰。
立即学习“Python免费学习笔记(深入)”;
- 例如:
parts = [],条件判断中parts.append("xxx"),最后result = "".join(parts) - 比反复
+=更快,也比嵌套 f-string 更易维护 - 若片段含格式化,可用
f"..."生成各部分再加入列表
不复杂但容易忽略:拼接性能不是玄学,关键看操作次数和数据规模。日常用 f-string,批量用 join(),避开循环内 +,就能兼顾速度与代码质量。











