Python 中的 String Builder 等效
Manav Narula
2023年1月30日
Python
Python String
字符串是字符的集合,并且是不可变的对象。我们必须为字符串中的每个更改指定一个新的内存块,而不是更改已经存在的内存块。
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
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: 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