Why is this simple conditional expression not working?

Question:

Very simple line:

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

fails with:

SyntaxError: can't assign to conditional expression

whereas expanded as:

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

works fine.

Asked By: Gabriel

||

Answers:

You are using it wrong. Use it this way:

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

The general form is:

var = val1 if cond else val2
Answered By: Aleksandr Kovalev

Should be

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

You can read it as:

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

which is to say that the expression on the right side of the assignment sign is fully evaluated and the result then assigned to the left side. The expression itself is two values separated by the condition.

Answered By: Larry Lustig
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.