【问题标题】:How to use "continue" in single line if esle within a for loop如果在for循环中为else,如何在单行中使用“继续”
【发布时间】: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)。

标签: python python-2.7 loops for-loop 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(...) 语句那样偶尔跳过缩进:)
    猜你喜欢
    • 2015-05-27
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2017-09-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多