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