计数器变量作为Python中for循环的步长值

Era*_*han 1 python loops python-3.x

在Java中,我们可以在其标题本身内更改for循环的计数器变量.见下文:

for(int i=1; i<1024; i*=2){
    System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)

我知道以下代码是错误的.但有没有一种方法可以在不改变i循环内部值的情况下编写.我喜欢让我的for循环简单而简短:-)

for i in range(1, 1024, i*=2):        
    print(i)
Run Code Online (Sandbox Code Playgroud)

MSe*_*ert 5

您可以定义自己的生成器来为您执行此操作:

def powers_of_two(start, end):
    while start < end:
        yield start
        start *= 2

for i in powers_of_two(1, 1024):
    print(i)
Run Code Online (Sandbox Code Playgroud)

这使:

1
2
4
8
16
32
64
128
256
512
Run Code Online (Sandbox Code Playgroud)