Ternary Operator in Python
The ternary operator is a shorthand way of writing an if-else
statement in a single line. Instead of using multiple lines for a condition, we can write it in a compact form.
It is also called:
- Conditional Expression
- Inline if-else statement
- Ternary Conditional Operator
1. Syntax of Ternary Operator
The general syntax of the ternary operator in Python is:
value_if_true if condition else value_if_false
Explanation:
condition
: A boolean expression that evaluates to eitherTrue
orFalse
.value_if_true
: The value returned if thecondition
isTrue
.value_if_false
: The value returned if thecondition
isFalse
.
2. Basic Example of Ternary Operator
Example: Checking if a Person is an Adult or Minor
age = 20
status = "Adult" if age >= 18 else "Minor"
print(status)
Output:
Adult
Explanation:
- If
age
is 18 or above,"Adult"
is assigned tostatus
. - Otherwise,
"Minor"
is assigned tostatus
.
3. Equivalent Code Using if-else Statement
The same logic can be written using a traditional if-else
statement:
age = 20
if age >= 18:
status = "Adult"
else:
status = "Minor"
print(status)
Output:
Adult
Key Difference:
- The ternary operator is a one-liner, making the code more concise.
- The if-else version takes multiple lines.
4. Using Ternary Operator Inside a Function
Example: Determining Voting Eligibility
def can_vote(age):
return "Eligible to vote" if age >= 18 else "Not eligible to vote"
print(can_vote(16)) # Output: Not eligible to vote
print(can_vote(22)) # Output: Eligible to vote
Output:
Not eligible to vote
Eligible to vote
5. Nested Ternary Operator
A nested ternary operator allows us to evaluate multiple conditions.
Example: Checking if a Number is Positive, Negative, or Zero
num = 0
result = "Positive" if num > 0 else "Negative" if num < 0 else "Zero"
print(result)
Output:
Zero
Equivalent if-else Statement
if num > 0:
result = "Positive"
elif num < 0:
result = "Negative"
else:
result = "Zero"
print(result)
Key Takeaway
- Nested ternary operators can be hard to read. If conditions are complex, use if-elif-else instead.
6. Alternative Ways to Implement Conditional Expressions
Apart from the ternary operator, there are alternative ways to implement conditional expressions in Python.
(A) Using Tuples for Conditional Selection
condition = True
value = ("False Value", "True Value")[condition]
print(value)
Output:
True Value
Explanation:
- The tuple
("False Value", "True Value")
acts like an array. condition = True
, which is treated as1
, so"True Value"
is selected.
Caution:
- This method evaluates both expressions inside the tuple, which may lead to performance issues.
(B) Using Dictionary Mapping
condition = False
value = {True: "Yes", False: "No"}[condition]
print(value)
Output:
No
Why Use a Dictionary?
- It allows mapping multiple conditions efficiently.
- Good for cases where there are more than two possible outcomes.
(C) Using Lambda Function
Lambda functions allow defining small functions inline.
is_even = lambda x: "Even" if x % 2 == 0 else "Odd"
print(is_even(4)) # Output: Even
print(is_even(7)) # Output: Odd
Output:
Even
Odd
7. Common Mistakes and How to Avoid Them
Mistake #1: Forgetting Parentheses in Nested Conditions
Incorrect:
num = 5
result = "Zero" if num == 0 else "Positive" if num > 0 else "Negative"
print(result)
Correct:
result = "Positive" if num > 0 else ("Negative" if num < 0 else "Zero")
print(result)
Mistake #2: Using Ternary Operator When if-else is More Readable
Unnecessarily Complicated Ternary Expression:
result = "Low" if x < 10 else "Medium" if x < 20 else "High" if x < 30 else "Very High"
Better Alternative (Using if-elif-else):
if x < 10:
result = "Low"
elif x < 20:
result = "Medium"
elif x < 30:
result = "High"
else:
result = "Very High"
8. When to Use the Ternary Operator?
Use the ternary operator when:
- The condition is simple.
- The expression remains readable.
Avoid the ternary operator when:
- The condition is complex.
- Nesting leads to confusing code.
9. Summary Table
Feature | Description |
---|---|
Syntax | value_if_true if condition else value_if_false |
Purpose | Shortens if-else statements |
Supports Nesting? | Yes, but can be hard to read |
Alternatives | Tuples, dictionaries, lambda functions |
Readability | Good for simple cases, bad for complex logic |
10. Final Example
Example: Grading System Using Ternary Operator
marks = 85
grade = "A" if marks >= 80 else "B" if marks >= 60 else "C" if marks >= 40 else "F"
print(grade)
Output:
A
Conclusion
The ternary operator in Python is a great tool for writing concise conditions. However, always prioritize readability over compactness.