【发布时间】:2009-10-02 09:06:17
【问题描述】:
这部分是一个理论问题:
我有一个字符串(比如 UTF-8),我需要修改它,使每个字符(不是字节)变成 2 个字符,例如:
"Nissim" becomes "N-i-s-s-i-m-"
"01234" becomes "0a1b2c3d4e"
等等。 我怀疑循环中的幼稚连接会太昂贵(这是瓶颈,这应该一直发生)。
我要么使用一个数组(预先分配),要么尝试制作我自己的 C 模块来处理这个问题。
有人对这种事情有更好的想法吗?
(请注意,问题始终与多字节编码有关,对于 UTF-8 也必须解决),
哦,它的 Python 2.5,所以这里没有闪亮的 Python 3 东西可用。
谢谢
【问题讨论】:
-
“太贵”是什么意思?你觉得这种天真的方法有多昂贵?
-
从未对其进行基准测试,但我怀疑内存将被分配、释放和重新分配,N 次输入中的 N 个字符。
-
立即对其进行分析。 Python 优化了字符串操作。不要永远假设某些东西如果没有被描述就太昂贵了。
-
@gnosis - 请记住,使用诸如 Python 之类的分代垃圾收集器,分配和释放短期对象实际上非常快。这方面的假设可能很危险。