Python 中的 String Builder 等效
Manav Narula
2023年1月30日
字符串是字符的集合,并且是不可变的对象。我们必须为字符串中的每个更改指定一个新的内存块,而不是更改已经存在的内存块。
C# 编程中的 StringBuilder
类创建可变的字符串对象并允许动态内存分配。我们在 Python 中没有这种要求,但是我们可以使用字符串连接来实现这一点,并创建长效的字符串对象。
这背后的主要思想是,我们获取一个字符串列表,并加入它们以构建大字符串。
使用 join()
函数
要连接列表中的字符串,我们可以使用 join()
函数。join()
方法将可迭代对象中的所有元素组合在一起后返回一个字符串。以下代码段对此进行了解释。
mylist = ["abcd" for i in range(5)]
mystring = "".join(mylist)
print(mystring)
输出:
abcdabcdabcdabcdabcd
还有许多其他方法可以连接列表中的字符串,但是 join()
函数被认为是最快的方法。
使用字符串串联方法
我们可以使用 for
循环和+
运算符轻松地将列表中的字符串连接起来。以下示例显示了操作方法。
mylist = ["abcd" for i in range(5)]
mystring = ""
for i in range(len(mylist)):
mystring += mylist[i]
print(mystring)
输出:
abcdabcdabcdabcdabcd
使用 StringIO
模块
StringIO
模块可用于读取和写入存储缓冲区中的字符串。我们创建一个 StringIO
对象,并在遍历列表之后将其写入该对象。我们可以使用 getvalue()
方法打印所需的字符串。例如,
file_str = StringIO()
for i in range(len(mylist)):
file_str.write(mylist[i])
print(file_str.getvalue())
输出:
abcdabcdabcdabcdabcd
我们还可以创建自己的类,该类可以使用 StringIO
模块中的函数附加字符串。例如,
from io 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()
sb = StringBuilder()
sb.Append("Hello ")
sb.Append("World")
print(sb)
输出:
Hello World
作者: Manav Narula
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn