有没有办法在每次迭代后使python中的"for"循环加倍我的索引值?

And*_*eng 7 python for-loop

在C++中,我可以轻松地编写一个类似于下面的for循环来实现此目的

for(int i = 1; i < 100; i *= 2){}
Run Code Online (Sandbox Code Playgroud)

有没有办法for在Python中做一个循环做同样的事情?或者while循环是我能做到这一点的唯一方法.

Mar*_*ers 4

for循环不做任何递增;相反,他们迭代一个可迭代对象。

您可以创建一个生成器函数,将数字序列生成为可迭代的:

def powers_of_two(start, stop=None):
    if stop is None:
        start, stop = 1, start  # start at 1, as 0 * 2 is still 0
    i = start
    while i < stop:
        yield i
        i *= 2

for i in powers_of_two(129):
    # ...
Run Code Online (Sandbox Code Playgroud)

演示:

>>> for i in powers_of_two(129):
...     print(i)
...
1
2
4
8
16
32
64
128
Run Code Online (Sandbox Code Playgroud)