The ternary operator in Python perform conditional checks and assign values or execute expressions in a single line. It is also known as a conditional expression because it evaluates a condition and returns one value if the condition is True and another if it is False.
Let’s start with a basic example to determine whether a number is even or odd:
n = 5
res = "Even" if n % 2 == 0 else "Odd"
print(res)
Output
Odd
Explanation:
- n % 2 == 0: checks if n is divisible by 2 (even).
- "Even" if n % 2 == 0 else "Odd": ternary operator assigns "Even" if the condition is True, otherwise "Odd".
Ways to Use Ternary Operator
1. Nested If else
The ternary operator can also be used in Python nested if-else statement. We can nest ternary operators to evaluate multiple conditions in a single line.
Syntax:
value_if_true if condition else value_if_false
n = -5
res = "Positive" if n > 0 else "Negative" if n < 0 else "Zero"
print(res)
Output
Negative
Explanation:
- First, it checks if num > 0. If True, it returns "Positive".
- If False, it checks if num < 0. If True, it returns "Negative".
- If both conditions fail, it defaults to "Zero".
2. Using Tuple
The ternary operator can also be written by using Python tuples. The tuple indexing method is an alternative to the ternary operator.
Syntax:
(condition_is_false, condition_is_true)[condition]
n = 7
res = ("Odd", "Even")[n % 2 == 0]
print(res)
Output
Odd
Explanation: The condition num % 2 == 0 evaluates to False (index 0), so it selects "Odd".
3. Using Dictionary
A dictionary can be used to map conditions to values, providing a way to use a ternary operator with more complex conditions.
Syntax:
condition_dict = {True: value_if_true, False: value_if_false}
a = 10
b = 20
m1 = {True: a, False: b}[a > b]
print(m1)
Output
20
Explanation: This uses a dictionary where the key is True or False based on the condition a > b. The corresponding value (a or b) is then selected.
4. Using Python Lambda
Lambdas can be used in conjunction with the ternary operator for inline conditional logic.
Syntax:
lambda x: value_if_true if condition else value_if_false
a = 10
b = 20
m1 = (lambda x, y: x if x > y else y)(a, b)
print(m1)
Output
20
Explanation: This defines an anonymous function (lambda) that takes two arguments and returns the larger one using the ternary operator. It is then called with a and b.
5. Using Print Function
The ternary operator can also be directly used with the Python print statement.
Syntax:
print(value_if_true if condition else value_if_false)
a = 10
b = 20
print("a is greater" if a > b else "b is greater")
Output
b is greater
Explanation: This checks if a is greater than b. If true, it prints "a is greater"; otherwise, it prints "b is greater".
Limitations of Python Ternary Operator
While the ternary operator is concise, it should be used with caution:
- It can reduce readability if overused or used in complex conditions.
- It's limited to simple, single-line expressions.