while statements operator meets ifelse different assignment python conditional

python - statements - ¿Por qué esta simple expresión condicional no funciona?



python if() (2)

Debiera ser

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

Puedes leerlo como:

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

es decir, la expresión en el lado derecho del signo de asignación se evalúa completamente y el resultado se asigna al lado izquierdo. La expresión en sí es dos valores separados por la condición.

Esta pregunta ya tiene una respuesta aquí:

Línea muy simple:

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

falla con:

SyntaxError: can''t assign to conditional expression

mientras que expandido como:

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

funciona bien.


Lo estás usando mal. Úsalo de esta manera:

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