I want to write a for loop that will iterate over the powers of 2 for each loop.
For example I would want a range like this:
2, 4, 8, 16, ... , 1024
You'll need to create your own function:
def doubling_range(start, stop):
while start < stop:
yield start
start <<= 1
This uses a left-shift operation; you could also use start *= 2
if you find that clearer.
Demo:
>>> def doubling_range(start, stop):
... while start < stop:
... yield start
... start <<= 1
...
>>> for i in doubling_range(2, 1025):
... print i
...
2
4
8
16
32
64
128
256
512
1024