# Divide the first element of a list by the second and third by the fourth and so on

Currently I have 2 lists which I divide by each other

``````a = [5,6,7,8]
b = [100,200,300,400]
output = [b/m for b,m in zip(a,b)]
```
```

However due to the nature of my database it is faster to retrieve list `a` and `b` differently:

``````data = [5,100,6,200,7,300,8,400]
```
```

The first value in the list is the first value in `a`, the second value the first value in `b`, the third value the second value in `a` and so on.

``````output = [5/100,6/200,7/300,8/400]
```
```

Thus I need to divide the first value by the second and the third by the fourth and so on. Now this is no problem, but I need it to be as fast as possible. Any suggestions?

You can use slicing for this:

``````output = [b / m for b, m in zip(data[::2], data[1::2])]
```
```

Edit 3: What we have now (`len(data) = 8000`):

1. The `iter` solution by Jon Clements with ~1ms
2. The normal slicing solution with 1.1ms
3. The `range` solution with 2.5ms
4. The `map` solution (materialising it using `list`) with 2.7ms