Perl & Python Tutorial

Python: a Technique to Append String in a Loop

Advertise Here

Xah Lee, 2012-03-14

Google's Python style guide has this interesting advice:

Avoid using the + and += operators to accumulate a string within a loop. Since strings are immutable, this creates unnecessary temporary objects and results in quadratic rather than linear running time. Instead, add each substring to a list and ''.join the list after the loop terminates (or, write each substring to a cStringIO.StringIO buffer).

They gave 2 examples, one using string append and the other using list append. Here's their examples, slightly modified to be runnable code:

# python
# append string in a loop

employee_list = [["Mary", "Jane"], ["Jenny", "Doe"], ["Alice", "Johnson"]]

employee_table = '<table>'
for last_name, first_name in employee_list:
    employee_table += '<tr><td>%s, %s</td></tr>' % (last_name, first_name)
employee_table += '</table>'

print employee_table
# python
# append string in a loop, but using list instead

employee_list = [["Mary", "Jane"], ["Jenny", "Doe"], ["Alice", "Johnson"]]

items = ['<table>']
for last_name, first_name in employee_list:
    items.append('<tr><td>%s, %s</td></tr>' % (last_name, first_name))
items.append('</table>')
employee_table = ''.join(items)

print employee_table

This is interesting in 2 aspects:

2012-03-16 For a speed test, see:

blog comments powered by Disqus
gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.