# 10.21. Functions that Produce ListsΒΆ

The pure version of `doubleStuff`

above made use of an
important **pattern** for your toolbox. Whenever you need to
write a function that creates and returns a list, the pattern is
usually:

```
initialize a result variable to be an empty list
loop
create a new element
append it to result
return the result
```

Let us show another use of this pattern. Assume you already have a function
`is_prime(x)`

that can test if x is prime. Now, write a function
to return a list of all prime numbers less than n:

```
def primes_upto(n):
""" Return a list of all prime numbers less than n. """
result = []
for i in range(2, n):
if is_prime(i):
result.append(i)
return result
```

You have attempted of activities on this page