python range setup解决办法

python range setup
python 中实现这样的循环:
for(i=2;i<val;i*=2)
都是用什么方法 ?
for i in range(2,goal,i*2) 这样写会报错
------解决方案--------------------
用while吧...
------解决方案--------------------
步长变化的吧?

for i in (2**x for x in range(1,val.bit_length())):
    pass

自己看着都觉得累 python range setup解决办法