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

Python如何对字符串执行类16位字节交换操作,现有方案是否最优?

你的现有实现功能正确,但不是最优方案,仍有不小的性能提升空间。

现有方案的性能缺陷

Python中字符串是不可变对象,你在while循环中每次用+拼接字符串,都会生成一个全新的字符串对象,当输入字符串长度较大时,会产生大量的临时对象,内存开销和时间损耗都会明显上升。


更优实现方案

按你后续会切换为列表输入的需求,分两种场景给出最优写法:

场景1:当前输入为连续长字符串

优先用列表推导式收集所有交换后的片段,最后一次性用join拼接,这是Python中字符串拼接性能最高的原生实现:

a = '34127895004211220001'
b = ''.join([a[i+2:i+4] + a[i:i+2] for i in range(0, len(a), 4)])
print(b)

如果输入字符串长度超过10万字符,推荐用正则的底层C实现来处理,性能会比Python层循环高50%以上:

import re
b = re.sub(r'(.)(.)(.)(.)', r'\3\4\1\2', a)

场景2:后续切换为列表输入(示例输入a = ['3412','7895','0042','1122','0001'])

直接对每个列表元素做切片交换即可,省去了列表拼接为长字符串的额外开销:

a = ['3412','7895','0042','1122','0001']
b = ''.join([s[2:] + s[:2] for s in a])
print(b)

性能对比参考

同等输入长度下:

  • 基于join的列表推导式实现,比你原有的while循环实现快30%以上,输入越长优势越明显
  • 列表输入的直接处理方案,比先拼接为长字符串再处理的方案再快20%左右

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:45:08