为啥这个简单的条件表达式不起作用? [复制]

Posted

技术标签:

【中文标题】为啥这个简单的条件表达式不起作用? [复制]【英文标题】: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

工作正常。

【问题讨论】:

抱歉,我时不时会忘记额外的=,最终对为什么线路不工作感到困惑。 不是重复的,之前的问题有优劣,这是一个常见的复制粘贴错误。 【参考方案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

以上是关于为啥这个简单的条件表达式不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章