Putting an if-elif-else statement on one line?
No, it's not possible (at least not with arbitrary statements), nor is it desirable. Fitting everything on one line would most likely violate PEP-8 where it is mandated that lines should not exceed 80 characters in length.
It's also against the Zen of Python: "Readability counts". (Type import this
at the Python prompt to read the whole thing).
You can use a ternary expression in Python, but only for expressions, not for statements:
>>> a = "Hello" if foo() else "Goodbye"
Edit:
Your revised question now shows that the three statements are identical except for the value being assigned. In that case, a chained ternary operator does work, but I still think that it's less readable:
>>> i=100
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
0
>>> i=101
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
2
>>> i=99
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
1
Python - One line if-elif-else statement
Try:
print {1: 'one', 2: 'two'}.get(a, 'none')
Putting a simple if-then-else statement on one line
That's more specifically a ternary operator expression than an if-then, here's the python syntax
value_when_true if condition else value_when_false
Better Example: (thanks Mr. Burns)
'Yes' if fruit == 'Apple' else 'No'
Now with assignment and contrast with if syntax
fruit = 'Apple'
isApple = True if fruit == 'Apple' else False
vs
fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True
More info on one line if-else statements in python
exec
doesn't actually need its argument to be in one line. You can pass it a multi-line string.
exec('if a:\n print("true")\nelse:\n print("false")')
c - if + else if + else in one line?
If you see e.g. this conditional expression reference you can see that the format of a "ternary expression" is
condition ? expression-true : expression-false
All three parts of the conditional expressions are, in turn, expressions. That means you can have almost any kind of expression, including nested conditional (ternary) expressions in them.
It should be noted that conditional expressions might make the code harder to read and understand, especially if used badly or if one attempt to put too much logic and nesting into the expressions.
A large if ... elif in python I want to improve in one line
Use a dictionary pairs
to hold the corresponding values and then use a list comprehension to map it over nums.
pairs = {'One': '1/5', 'Two': '2/5', 'Three': '3/5', 'Four': '4/5', 'Five': '5/5'}
nums = ['One', 'Five', 'Three', 'Four']
ratings = [pairs[num] for num in nums if num in pairs]
Javascript one line If...else...else if statement
Sure, you can do nested ternary operators but they are hard to read.
var variable = (condition) ? (true block) : ((condition2) ? (true block2) : (else block2))
Related Topics
How to Use Rpy2 to Save a Pandas Dataframe to an .Rdata File
Interpreting a Benchmark in C, Clojure, Python, Ruby, Scala and Others
Python VS Groovy VS Ruby? (Based on Criteria Listed in Question)
How to Integrate a Standalone Python Script into a Rails Application
Integration Testing for a Web App
How to Write a Perl, Python, or Ruby Program to Change the Memory of Another Process on Windows
Convert Backward Slash to Forward Slash in Python
What's the Ruby Equivalent of Python's Os.Walk
Restrictons of Python Compared to Ruby: Lambda'S
Efficient Ways to Duplicate Array/List in Python
Python Equivalent of Ruby's Each_Slice(Count)
Popen Waiting for Child Process Even When the Immediate Child Has Terminated
How to Send an Email with Python
Python Urllib2, Basic Http Authentication, and Tr.Im