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