How might I compress an if/else statement to one line in Python?
-
1stackoverflow.com/questions/1686390/… docs.python.org/reference/compound_stmts.htmlTheZ– TheZ2012年07月17日 19:15:33 +00:00Commented Jul 17, 2012 at 19:15
-
3That's the question you wanted to link: stackoverflow.com/questions/394809/python-ternary-operatorKijewski– Kijewski2012年07月17日 19:17:01 +00:00Commented Jul 17, 2012 at 19:17
-
2another reference: stackoverflow.com/questions/7778400/…clwen– clwen2012年07月17日 19:17:13 +00:00Commented Jul 17, 2012 at 19:17
-
This is the question I was thinking of: stackoverflow.com/questions/11491944/…Levon– Levon2012年07月17日 19:26:51 +00:00Commented Jul 17, 2012 at 19:26
-
1Conditional expressions don't cover all cases (or all versions). Now what?Brent Bradburn– Brent Bradburn2013年02月05日 19:57:03 +00:00Commented Feb 5, 2013 at 19:57
4 Answers 4
An example of Python's way of doing "ternary" expressions:
i = 5 if a > 7 else 0
translates into
if a > 7:
i = 5
else:
i = 0
This actually comes in handy when using list comprehensions, or sometimes in return statements, otherwise I'm not sure it helps that much in creating readable code.
The readability issue was discussed at length in this recent SO question better way than using if-else statement in python.
It also contains various other clever (and somewhat obfuscated) ways to accomplish the same task. It's worth a read just based on those posts.
Python's if can be used as a ternary operator:
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
1 Comment
Only for using as a value:
x = 3 if a==2 else 0
or
return 3 if a==2 else 0
1 Comment
There is the conditional expression:
a if cond else b
but this is an expression, not a statement.
In if statements, the if (or elif or else) can be written on the same line as the body of the block if the block is just one like:
if something: somefunc()
else: otherfunc()
but this is discouraged as a matter of formatting-style.