首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python字符串类,就像C#中的StringBuilder?

Python字符串类,就像C#中的StringBuilder?
EN

Stack Overflow用户
提问于 2010-03-10 13:08:43
回答 5查看 162.8K关注 0票数 151

Python语言中有像C#中的StringBuilder这样的字符串类吗?

EN

回答 5

Stack Overflow用户

发布于 2016-04-12 02:26:10

依赖编译器优化是脆弱的。Antoine-tran给出的答案和数字中链接的基准是不可信任的。Andrew Hare犯了一个错误,在他的方法中包含了对repr的调用。这同样减慢了所有方法的速度,但模糊了构造字符串时的实际惩罚。

使用join。它非常快,也更健壮。

代码语言:javascript
复制
$ ipython3
Python 3.5.1 (default, Mar  2 2016, 03:38:02) 
IPython 4.1.2 -- An enhanced Interactive Python.

In [1]: values = [str(num) for num in range(int(1e3))]

In [2]: %%timeit
   ...: ''.join(values)
   ...: 
100000 loops, best of 3: 7.37 µs per loop

In [3]: %%timeit
   ...: result = ''
   ...: for value in values:
   ...:     result += value
   ...: 
10000 loops, best of 3: 82.8 µs per loop

In [4]: import io

In [5]: %%timeit
   ...: writer = io.StringIO()
   ...: for value in values:
   ...:     writer.write(value)
   ...: writer.getvalue()
   ...: 
10000 loops, best of 3: 81.8 µs per loop
票数 37
EN

Stack Overflow用户

发布于 2013-11-02 21:37:50

使用上面的方法5(伪文件),我们可以获得非常好的性能和灵活性

代码语言:javascript
复制
from cStringIO import StringIO

class StringBuilder:
     _file_str = None

     def __init__(self):
         self._file_str = StringIO()

     def Append(self, str):
         self._file_str.write(str)

     def __str__(self):
         return self._file_str.getvalue()

现在使用它

代码语言:javascript
复制
sb = StringBuilder()

sb.Append("Hello\n")
sb.Append("World")

print sb
票数 15
EN

Stack Overflow用户

发布于 2010-03-10 13:11:09

您可以尝试使用StringIOcStringIO

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2414667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档