如果在for循环中为else,如何在单行中使用“继续”
Posted
技术标签:
【中文标题】如果在for循环中为else,如何在单行中使用“继续”【英文标题】:How to use "continue" in single line if esle within a for loop 【发布时间】:2019-08-30 03:46:48 【问题描述】:我有一个 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
【问题讨论】:
X if C else Y
是一个表达式。 continue
是一个声明。 Python 中的表达式不能包含语句。将您的 if
表达式转换为 if
语句以进行修复。
三元运算符允许您将变量分配给 A if match condition else B. 这意味着 B 应该是变量或值而不是 Python 关键字 (continue
)。
【参考方案1】:
Python 中不存在单行 if 条件。您在第一个示例中拥有的是ternary expression。
您正在尝试将 continue
分配给名为 value
的变量,这没有任何意义,因此出现语法错误。
【讨论】:
【参考方案2】:您能否稍微解释一下,因为您想要实现的目标可能是专家可以建议您更好的选择。对我来说,在此处添加 else 是没有意义的,因为您只是添加 else 来继续,这无论如何都会在 if 条件之后发生。
无论如何,如果我猜对了,您正在寻找的是list comprehension。这是一个如何使用它的工作示例,
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
【讨论】:
是的,但可以安全地假设这是实际代码的摘录,因此我们不知道for
循环中if
子句之后是否还有更多行。
同意,因此我首先建议他先解释问题,而不是讨论他的解决方案。只是一个建议!【参考方案3】:
Python 对控制结构使用缩进。你想做的事情在python中是不可能的。
【讨论】:
这并不完全正确,也不能回答问题。你可以写,例如if flag: foo()
。请注意控制结构中没有缩进。
@Selcuk 您的回答无疑更好,但我的回答仍然准确无误。 Python 确实对控制结构使用缩进 - 而且 - 他想要做的事情在 Python 中是不可能的。我并不打算表达不可能像我最喜欢的if DE:BUG(...)
语句那样偶尔跳过缩进:)以上是关于如果在for循环中为else,如何在单行中使用“继续”的主要内容,如果未能解决你的问题,请参考以下文章