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

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

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

有条件的分配,为啥它不起作用?

为啥简单的算术减法在“if”条件下不起作用?

为啥这个 VBA if 语句不起作用?

AnyLogic - 为啥我的基于条件的转换不起作用?

为啥在条件格式公式中引用另一个 Google 表格选项卡不起作用?

为啥我的 while 循环中的条件在 python 中不起作用?