web-dev-qa-db-ja.com

この単純な条件式が機能しないのはなぜですか?

非常に単純な行:

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

正常に動作します。

23
Gabriel

間違って使用しています。次のように使用します。

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

あるべき

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

次のように読むことができます。

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

つまり、割り当て記号の右側の式が完全に評価され、結果が左側に割り当てられます。式自体は2つの値です区切られた条件によって。

8
Larry Lustig