# Lists: Iterating over Lists
([home](https://github.com/alexhkurz/introduction-to-programming/blob/master/README.md) ... [previous](https://hackmd.io/@alexhkurz/r1erdGSlP) ... [next](https://hackmd.io/@alexhkurz/By6YoM8Gw) ... )
In the previous lecture we looked the complexity of a simple sorting algorithm. But we did not implement this algorithm in an actual programming language. We only analysed the time complexity of any such implementation.
To implement sorting in a programming language we need a data structure that collects elements in an ordered fashion. For example, we may collect numbers in a list
[1,2,3,4]
We also have a list with no elements, the emtpy list
[]
Elements of a list can be accessed by their position (or index) in the list. Such lists are also known as **arrays** or **vectors** The first position has index `0`, the second has index `1`, and so on. For example, we can have the following dialogue with Python.
>>> l = [4,3,2,1]
>>> l
[4, 3, 2, 1]
>>> l[0]
4
>>> l[1]
3
>>> l[4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
We can use this to print all the elements of a list.
>>> for i in range (0,4):
... print(l[i])
...
4
3
2
1
In many imperative programming languages (such as C), this is essentially how one would iterate through an array. Python instead offers a more elegant way:
>>> for x in l:
... print(x)
...
4
3
2
1
Let us practice this idea of using a `for`-loop to iterate through a list with the following exercise.
**Activity:** Write a Python program that computes the length of a list. Complete the program below.
my_list = [4,1,-1,10]
def length(list):
<your code here>
print(length(my_list))
- The function length should return the length of `list`. Remember the session on [`for`-loops](https://hackmd.io/@alexhkurz/H1o4Mcr6L). Think and try for yourself. Only then, if you need a hint, read the footnote.[^Hints]
- Test your program with different lists. Make sure that you include the empty list in the tests.
**Homework/Activity:** Assume that we know that all the elements of the list are integers. Write Python programs that compute
- the sum of the elements of the list;
- the product of the elements of the list;
- the average of the elements of the list.
[^Hints]: Use an auxiliary variable to successively compute the length of `list`, similarly to how we used `sum` in the first activity of the session on [`for`-loops](https://hackmd.io/@alexhkurz/H1o4Mcr6L). Recall how the [`return`-statement](https://hackmd.io/@alexhkurz/HJHS4NUAI) works.