Python で同等の Stringbuilder
文字列は文字のコレクションであり、不変のオブジェクトです。既存のブロックを変更するのではなく、文字列を変更するたびに新しいメモリブロックを指定する必要があります。
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 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