繁体   English   中英

我试图弄清楚如何以 2 的幂为循环递增

[英]I'm trying to figure out how increment for loop in powers of 2

我习惯于在 C 中编码,我目前被困在 python 中的 for 循环中。
在 C 中,for 循环类似于for(int i, i<=1024,i*=2){}
我试过for i in range(1,1024,*2) ,但它似乎不接受 *
我目前正在使用

Distance = 1
increment = 2
SearchRange = 1024
while Distance<SearchRange:
  Distance *=increment

为了达到类似的结果,我可以在 python 的一行中做些什么来使其工作。
我确定我错过了一些非常简单的东西。请帮忙!谢谢!

使用 while 循环来做到这一点:

step = 1
i = 1
while i <= 1024:
    print(i)
    i *=2

Output:

1
2
4
8
16
32
64
128
256
512
1024

在 Python 中,它会写成:

for i in range(1024):
    i*=2

查看https://wiki.python.org/moin/ForLoop了解更多其他示例。

这应该可以正常工作:

>>> for i in range(15) :
...     print 1 << i, 
... 
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384
>>> 

自问题更新以来的新答案:

iterable_range = [ 2**j for j in range(0,1024) ]
for i in iterable_range:
    print(i)

使用 for 循环,您可以提供一个iterable ,每次迭代都从中选择值。 它不像修改索引i的 C。 因此,要在 Python 中实现相同的效果,您需要创建一个包含所有值的可迭代对象。

这会产生所需的:

1
2
4
8
16
32
64
128
etc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM