[Tutor] working with strings in python3

Steven D'Aprano steve+comp.lang.python at pearwood.info
Mon Apr 18 22:16:52 EDT 2011


On Tue, 19 Apr 2011 10:34:27 +1000, James Mills wrote:

> Normally it's considered bad practise to concatenate strings. 

*Repeatedly*.

There's nothing wrong with concatenating (say) two or three strings. 
What's a bad idea is something like:


s = ''
while condition:
    s += "append stuff to end"

Even worse:

s = ''
while condition:
    s = "insert stuff at beginning" + s

because that defeats the runtime optimization (CPython only!) that 
*sometimes* can alleviate the badness of repeated string concatenation.

See Joel on Software for more:

http://www.joelonsoftware.com/articles/fog0000000319.html

But a single concatenation is more or less equally efficient as string 
formatting operations (and probably more efficient, because you don't 
have the overheard of parsing the format mini-language).

For repeated concatenation, the usual idiom is to collect all the 
substrings in a list, then join them all at once at the end:

pieces = []
while condition:
    pieces.append('append stuff at end')
s = ''.join(pieces)




-- 
Steven



More information about the Python-list mailing list