有没有办法在 Python (3) for 循环中做条件语句?

Gra*_*ice 15 python for-loop python-3.x

主要来自 Java 编码,想知道 Python 是否可以在其 for 循环中使用条件和不同类型的递增,如 Java 和 C 可以。对不起,如果这似乎是一个简单的问题。

IE:

boolean flag = True
for(int i = 1; i < 20 && flag; i *= 2) {
    //Code in here
}
Run Code Online (Sandbox Code Playgroud)

che*_*ner 22

不直接。甲for循环遍历预先生成的序列,而不是生成的序列本身。天真的翻译可能看起来像

flag = True
i = 1
while i < 20:
    if not flag:
        break
    ...
    if some_condition:
        flag = False
    i *= 2
Run Code Online (Sandbox Code Playgroud)

但是,您的代码可能break在您设置flag为 的任何地方执行该语句False,因此您可能会完全摆脱该标志。

i = 1
while i < 20:
    ...
    if some_condition:
        break
    i *= 2
Run Code Online (Sandbox Code Playgroud)

最后,您可以定义自己的生成器来迭代

def powers_of_two():
    i = 1
    while True:
        yield i
        i *= 2


for i in powers_of_two():
    ...
    if some_condition:
        break
    
Run Code Online (Sandbox Code Playgroud)