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
):
- The
iter
solution by Jon Clements with ~1ms - The normal slicing solution with 1.1ms
- The
range
solution with 2.5ms - The
map
solution (materialising it usinglist
) with 2.7ms