如果在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,如何在单行中使用“继续”的主要内容,如果未能解决你的问题,请参考以下文章

IF else 和 for 在一行中循环

在for循环中排除字典中的项目,并在字典中使用if和 else。

单行嵌套 For 循环

如何在 For 循环中为多个类别有条件地更新值

Java生态/Redis中如何使用Lua脚本

由于 continue 而忽略了数组 for 循环中的基本 else 语句