String Builder equivalente em Python
Uma string é uma coleção de caracteres e é um objeto imutável. Temos que especificar um novo bloco de memória para cada mudança em uma string, em vez de alterar o bloco já existente.
A classe StringBuilder
na programação C# cria objetos string mutáveis e permite a alocação de memória dinâmica. Não temos esses calss no Python, mas podemos usar a concatenação de strings para conseguir isso e criar objetos de string longos e eficientes.
A ideia principal por trás disso é pegarmos uma lista de strings e juntá-los para construir strings grandes.
Use a função join()
Para juntar strings de uma lista, podemos usar a função join()
. O método join()
retorna uma string após combinar todos os elementos de um objeto iterável. O trecho de código a seguir explica isso.
mylist = ["abcd" for i in range(5)]
mystring = "".join(mylist)
print(mystring)
Resultado:
abcdabcdabcdabcdabcd
Existem muitas outras maneiras de concatenar strings de uma lista, mas a função join()
é considerada a mais rápida de todas.
Use o método de concatenação de strings
Podemos facilmente concatenar strings de uma lista usando o loop for
e o operador +
. O exemplo a seguir mostra como.
mylist = ["abcd" for i in range(5)]
mystring = ""
for i in range(len(mylist)):
mystring += mylist[i]
print(mystring)
Resultado:
abcdabcdabcdabcdabcd
Use o Módulo StringIO
O módulo StringIO
pode ser usado para ler e escrever strings no buffer de memória. Criamos um objeto StringIO
e o gravamos neste objeto depois de percorrer a lista. Podemos imprimir a string necessária usando o método getvalue()
. Por exemplo,
file_str = StringIO()
for i in range(len(mylist)):
file_str.write(mylist[i])
print(file_str.getvalue())
Resultado:
abcdabcdabcdabcdabcd
Também podemos criar uma classe própria que pode anexar strings usando funções do módulo StringIO
. Por exemplo,
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)
Resultado:
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