Equivalente di String Builder in Python

Manav Narula 25 aprile 2021
  1. Usa la funzione join()
  2. Utilizzare il metodo di concatenazione di stringhe
  3. Usa il modulo StringIO
Equivalente di String Builder in Python

Una stringa è una raccolta di caratteri ed è un oggetto immutabile. Dobbiamo specificare un nuovo blocco di memoria per ogni modifica in una stringa piuttosto che alterare il blocco già esistente.

La classe StringBuilder nella programmazione C# crea oggetti stringa mutabili e consente l’allocazione dinamica della memoria. Non abbiamo tali calss in Python, ma possiamo usare la concatenazione di stringhe per ottenere ciò e creare oggetti stringa lunghi ed efficienti.

L’idea principale alla base di questo è che prendiamo una lista di stringhe e le uniamo per costruire stringhe di grandi dimensioni.

Usa la funzione join()

Per unire stringhe da una lista, possiamo usare la funzione join(). Il metodo join() restituisce una stringa dopo aver combinato tutti gli elementi di un oggetto iterabile. Il seguente frammento di codice lo spiega.

mylist = ["abcd" for i in range(5)]
mystring = "".join(mylist)
print(mystring)

Produzione:

abcdabcdabcdabcdabcd

Ci sono molti altri modi per concatenare stringhe da una lista, ma la funzione join() è considerata la più veloce di tutte.

Utilizzare il metodo di concatenazione di stringhe

Possiamo facilmente concatenare stringhe da una lista usando il cicli for e l’operatore +. L’esempio seguente mostra come.

mylist = ["abcd" for i in range(5)]
mystring = ""
for i in range(len(mylist)):
    mystring += mylist[i]
print(mystring)

Produzione:

abcdabcdabcdabcdabcd

Usa il modulo StringIO

Il modulo StringIO può essere utilizzato per leggere e scrivere stringhe nel buffer di memoria. Creiamo un oggetto StringIO e lo scriviamo su questo oggetto dopo aver fatto scorrere l’lista. Possiamo stampare la stringa richiesta usando il metodo getvalue(). Per esempio,

file_str = StringIO()
for i in range(len(mylist)):
    file_str.write(mylist[i])
print(file_str.getvalue())

Produzione:

abcdabcdabcdabcdabcd

Possiamo anche creare una nostra classe che può aggiungere stringhe usando funzioni dal modulo StringIO. Per esempio,

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)

Produzione:

Hello World
Autore: 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

Articolo correlato - Python String