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