如何在 for 循环中使用 if esle 在单行中使用“继续”

问题描述 投票:0回答:6

我有一个 for 循环,其中有一个简单的单行 if 条件。 我想在 else 部分使用 continue 选项。

这不起作用:

def defA() : 
    return "yes"
flag = False
for x in range(4) : 
    value = defA() if flag else continue
                              ^
SyntaxError: invalid syntax

工作代码:

for x in range(4) : 
    if flag : 
        defA()
    else : 
        continue
python python-2.7 loops for-loop continue
6个回答
7
投票

Python 中不存在单行 if 条件这样的东西。第一个示例中的内容是一个三元表达式

您试图将

continue
分配给名为
value
的变量,这没有任何意义,因此会出现语法错误。


2
投票

是的,您可以在一行中继续陈述,如下所示。如果您遇到问题请告诉我

for i in range(1, 5):
    if i == 2: continue
    print(i)

2
投票
for x in range(4) : 
    if not flag: continue
    defA()

我就是这么做的。我喜欢这种保护子句风格的模式,这样读者就知道是否没有标志,下面还有其他逻辑需要担心,并且它避免了额外的缩进。


1
投票

您能否解释一下,因为您想要实现的目标可能是专家可以建议您更好的选择。对我来说,在这里添加 else 没有意义,因为您只是添加 else 来继续,这在任何情况下都会在 if 条件之后发生。

无论如何,如果我猜对了,你正在寻找的是列表理解。这是如何使用它的工作示例,

def defA() :
    return "yes"

flag = True

value = [defA() if flag else 'No' for x in range(4)]  #If you need to use else
value = [defA() for x in range(4) if flag]            #If there is no need for else

0
投票

Python 使用缩进来控制结构。你想做的事情在Python中是不可能的。


0
投票

这对我有用:

array = [1,2,3,4,5]
filtered_array = [x for x in array if x > 3]
© www.soinside.com 2019 - 2024. All rights reserved.