6.12. Case Study: Str Join
6.12.1. Environment
Date: 2026-05-19
Python: 3.14.5
IPython: 9.13.0
System: macOS 26.5
Computer: MacBook M3 Max
CPU: 16 cores (12 performance and 4 efficiency) / 3nm
RAM: 128 GB RAM LPDDR5
6.12.2. Add/IAdd Operator
>>> DATA = [
... ('firstname', 'lastname', 'age'),
... ('Alice', 'Apricot', 30),
... ('Bob', 'Blackthorn', 31),
... ('Carol', 'Corn', 32),
... ('Dave', 'Durian', 33),
... ('Eve', 'Elderberry', 34),
... ('Mallory', 'Melon', 15),
... ]
>>>
>>> header = DATA[0]
>>> rows = DATA[1:]
>>>
>>> result = '<table>'
>>> result += '\n<tr><th>Firstname</th><th>Lastname</th><th>Age</th></tr>'
>>>
>>> for firstname, lastname, age in rows:
... result += f'\n<tr><td>{firstname}</td><td>{lastname}</td><td>{age}</td></tr>'
...
>>> result += '\n</table>'
>>>
>>> print(result)
<table>
<tr><th>Firstname</th><th>Lastname</th><th>Age</th></tr>
<tr><td>Alice</td><td>Apricot</td><td>30</td></tr>
<tr><td>Bob</td><td>Blackthorn</td><td>31</td></tr>
<tr><td>Carol</td><td>Corn</td><td>32</td></tr>
<tr><td>Dave</td><td>Durian</td><td>33</td></tr>
<tr><td>Eve</td><td>Elderberry</td><td>34</td></tr>
<tr><td>Mallory</td><td>Melon</td><td>15</td></tr>
</table>
6.12.3. Str Join
>>> DATA = [
... ('firstname', 'lastname', 'age'),
... ('Alice', 'Apricot', 30),
... ('Bob', 'Blackthorn', 31),
... ('Carol', 'Corn', 32),
... ('Dave', 'Durian', 33),
... ('Eve', 'Elderberry', 34),
... ('Mallory', 'Melon', 15),
... ]
>>>
>>> header = DATA[0]
>>> rows = DATA[1:]
>>>
>>> result = []
>>> result.append('<table>')
>>> result.append('<tr><th>Firstname</th><th>Lastname</th><th>Age</th></tr>')
>>>
>>> for firstname, lastname, age in rows:
... result.append(f'<tr><td>{firstname}</td><td>{lastname}</td><td>{age}</td></tr>')
>>>
>>> result.append('</table>')
>>> result = '\n'.join(result)
>>>
>>> print(result)
<table>
<tr><th>Firstname</th><th>Lastname</th><th>Age</th></tr>
<tr><td>Alice</td><td>Apricot</td><td>30</td></tr>
<tr><td>Bob</td><td>Blackthorn</td><td>31</td></tr>
<tr><td>Carol</td><td>Corn</td><td>32</td></tr>
<tr><td>Dave</td><td>Durian</td><td>33</td></tr>
<tr><td>Eve</td><td>Elderberry</td><td>34</td></tr>
<tr><td>Mallory</td><td>Melon</td><td>15</td></tr>
</table>