Python 中的 String Builder 等效

Manav Narula 2023年1月30日
  1. 使用 join() 函数
  2. 使用字符串串联方法
  3. 使用 StringIO 模块
Python 中的 String Builder 等效

字符串是字符的集合,并且是不可变的对象。我们必须为字符串中的每个更改指定一个新的内存块,而不是更改已经存在的内存块。

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 Narula avatar Manav Narula avatar

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

相关文章 - Python String