# Looping
It's common in templating to format a list of items, for example, a `
` list.
Many Python template languages invent a Python-like grammar to do `for` loops
and the like.
## Simple Looping
You know what's more Python-like? Python.
f-strings can do looping in a Python expression using list comprehensions and so
can `tdom`:
```python
message = "Hello"
names = ["World", "Universe"]
result = html(
t"""
{[t'- {name}
' for name in names]}
"""
)
assert str(result) == """
"""
```
## Rendered Looping
You could also move the generation of the items out of the "parent" template,
then use that `Node` result in the next template:
```python
message = "Hello"
names = ["World", "Universe"]
items = [html(t"- {label}
") for label in names]
result = html(t"")
assert str(result) == ''
```