【问题标题】:Why is this simple conditional expression not working? [duplicate]为什么这个简单的条件表达式不起作用? [复制]
【发布时间】:2016-01-02 10:57:41
【问题描述】:

很简单的一行:

i = 3
a = 2 if i in [1, 3, 6] else a = 7

失败:

SyntaxError: can't assign to conditional expression

而扩展为:

if i in [1, 3, 6]:
    a = 2
else:
    a = 7

工作正常。

【问题讨论】:

  • 抱歉,我时不时会忘记额外的=,最终对为什么线路不工作感到困惑。
  • 不是重复的,之前的问题有优劣,这是一个常见的复制粘贴错误。

标签: python conditional


【解决方案1】:

你用错了。以这种方式使用它:

a = 2 if i in [1, 3, 6] else 7

一般形式是:

var = val1 if cond else val2

【讨论】:

    【解决方案2】:

    应该是

     a = 2 if i in [1, 3, 6] else 7
    

    你可以这样理解:

     a = (((2 if i in [1, 3, 6] else 7)))
    

    也就是说,赋值符号右侧的表达式被完全评估,然后将结果分配给左侧。表达式本身是由条件分隔的两个值。

    【讨论】:

    • What about: myvar=array["key"] if "key" in mydict else myvar=default 这对我不起作用
    • 与原始海报相同的错误。最后应该是else default
    猜你喜欢
    • 2014-10-15
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2021-05-10
    相关资源
    最近更新 更多