How to condense if/else into one line in Python?

Python

Python Problem Overview


> Possible Duplicate:
> Python Ternary Operator
> Putting a simple if-then statement on one line

Is there a way to compress an if/else statement to one line in Python?
I oftentimes see all sorts of shortcuts and suspect it can apply here too.

Python Solutions


Solution 1 - Python

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 https://stackoverflow.com/questions/11491944/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.

Solution 2 - Python

Python's if can be used as a ternary operator:

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

Solution 3 - Python

Only for using as a value:

x = 3 if a==2 else 0

or

return 3 if a==2 else 0

Solution 4 - Python

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAnovaVarianceView Question on Stackoverflow
Solution 1 - PythonLevonView Answer on Stackoverflow
Solution 2 - PythonslothView Answer on Stackoverflow
Solution 3 - Pythonf pView Answer on Stackoverflow
Solution 4 - PythonBrenBarnView Answer on Stackoverflow