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>