Can I use a conditional in a variable declaration?
andy at wild-flower.co.uk
Sun Mar 19 13:12:37 CET 2006
volcs0 at gmail.com wrote:
>I've done this in Scheme, but I'm not sure I can in Python.
>I want the equivalent of this:
>if a == "yes":
> answer = "go ahead"
> answer = "stop"
>in this more compact form:
>a = (if a == "yes": "go ahead": "stop")
>is there such a form in Python? I tried playing around with lambda
>expressions, but I couldn't quite get it to work right.
a = ["stop","go ahead"][a == "yes"]
This works because:
>>> int("yes" == "yes")
>>> int("yes" == "no")
Taking into account all the previous comments - both the literal list
elements are evaluated; there is no short-cirtuiting here. If they're
just literals, it's no problem, but if they're (possibly
compute-intensive) function calls, it would matter. I find the list
evaluation easier to parse than the and/or equation, and in instances
where that would be necessary, I will use the longhand if ... else ...
structure for readability.
More information about the Python-list