HOWTO · Python
Équivalent de String Builder en Python
Ce tutoriel montre l'équivalent de la classe StringBuilder en Python
Une chaîne est une collection de caractères et est un objet immuable. Nous devons spécifier un nouveau bloc de mémoire pour chaque changement dans une chaîne plutôt que de modifier le bloc déjà existant.
La classe StringBuilder dans la programmation C# crée des objets chaîne mutables et permet l’allocation dynamique de la mémoire. Nous n’avons pas de tels cals en Python, mais nous pouvons utiliser la concaténation de chaînes pour y parvenir et créer de longs objets chaîne efficaces.
L’idée principale derrière cela est que nous prenons une liste de chaînes et les joignons pour créer de grandes chaînes.
Utilisez la fonction join()
Pour joindre des chaînes à partir d’une liste, nous pouvons utiliser la fonction join(). La méthode join() retourne une chaîne après avoir combiné tous les éléments d’un objet itérable. L’extrait de code suivant explique cela.
mylist = ["abcd" for i in range(5)]
mystring = "".join(mylist)
print(mystring)
Production:
abcdabcdabcdabcdabcd
Il existe de nombreuses autres façons de concaténer des chaînes à partir d’une liste, mais la fonction join() est considérée comme la plus rapide de toutes.
Utilisez la méthode de concaténation de chaînes
Nous pouvons facilement concaténer des chaînes à partir d’une liste en utilisant la boucle for et l’opérateur +. L’exemple suivant montre comment.
mylist = ["abcd" for i in range(5)]
mystring = ""
for i in range(len(mylist)):
mystring += mylist[i]
print(mystring)
Production:
abcdabcdabcdabcdabcd
Utilisez le module StringIO
Le module StringIO permet de lire et d’écrire des chaînes dans la mémoire tampon. Nous créons un objet StringIO et l’écrivons dans cet objet après avoir parcouru la liste. Nous pouvons imprimer la chaîne requise en utilisant la méthode getvalue(). Par exemple,
file_str = StringIO()
for i in range(len(mylist)):
file_str.write(mylist[i])
print(file_str.getvalue())
Production:
abcdabcdabcdabcdabcd
Nous pouvons également créer notre propre classe qui peut ajouter des chaînes en utilisant les fonctions du module StringIO. Par exemple,
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)
Production:
Hello World