Ik wil een efficiënte manier om een string aan een andere string toe te voegen in Python, anders dan het volgende.
var1 = "foo"
var2 = "bar"
var3 = var1 + var2
Is er een goede ingebouwde methode om te gebruiken?
Optimaliseer niet voortijdig. Als je geen reden hebt om aan te nemen dat er een snelheids-bottleneck wordt veroorzaakt door string aaneenschakelingen, hou het dan bij +
en +=
:
s = 'foo'
s += 'bar'
s += 'baz'
Dat gezegd hebbende, als je streeft naar iets als Java's StringBuilder, de canonieke Python idioom is om items toe te voegen aan een lijst en dan str.join
te gebruiken om ze allemaal aan elkaar te plakken aan het eind:
l = []
l.append('foo')
l.append('bar')
l.append('baz')
s = ''.join(l)
str1 = "Hello"
str2 = "World"
newstr = " ".join((str1, str2))
Dat voegt str1 en str2 samen met een spatie als scheidingsteken. Je kunt ook "".join(str1, str2, ...)
doen. str.join()
neemt een iterable, dus je'zou de strings in een lijst of een tuple moeten zetten.
Dat is ongeveer zo efficiënt als het kan worden voor een ingebouwde methode.
Als je veel append operaties moet doen om een grote string te bouwen, kun je StringIO of cStringIO gebruiken. De interface is als een bestand. Dat wil zeggen: je schrijft
om er tekst aan toe te voegen.
Als je slechts twee strings append, gebruik dan +
.