Ternary operators also known as conditional expressions are operators that evaluate something based on a condition being true or false. It was added to Python in version 2.5.
It simply allows to test a condition in a single line replacing the multiline if-else making the code compact.
Syntax :
[on_true] if [expression] else [on_false]
- Simple Method to use ternary operator:
# Program to demonstrate conditional operator
a, b
=
10
,
20
# Copy value of a in min if a < b else copy b
min
=
a
if
a < b
else
b
print
(
min
)
Output: 10
- Direct Method by using tuples, Dictionary and lambda
# Python program to demonstrate ternary operator
a, b
=
10
,
20
# Use tuple for selecting an item
print
( (b, a) [a < b] )
# Use Dictionary for selecting an item
print
({
True
: a,
False
: b} [a < b])
# lamda is more efficient than above two methods
# because in lambda we are assure that
# only one expression will be evaluated unlike in
# tuple and Dictionary
print
((
lambda
: b,
lambda
: a)[a < b]())
Output: 10 10 10
- Ternary operator can be written as nested if-else:
# Python program to demonstrate nested ternary operator
a, b
=
10
,
20
print
(
"Both a and b are equal"
if
a
=
=
b
else
"a is greater than b"
if
a > b
else
"b is greater than a"
)
Above approach can be written as:
# Python program to demonstrate nested ternary operator
a, b
=
10
,
20
if
a !
=
b:
if
a > b:
print
(
"a is greater than b"
)
else
:
print
(
"b is greater than a"
)
else
:
print
(
"Both a and b are equal"
)
Output: b is greater than a
Important Points:
- First the given condition is evaluated (a < b), then either a or b is returned based on the Boolean value returned by the condition
- Order of the arguments in the operator is different from other languages like C/C++ (See C/C++ ternary operators).
- Conditional expressions have the lowest priority amongst all Python operations.
Method used prior to 2.5 when ternary operator was not present
In an expression like the one given below , the interpreter checks for the expression if this is true then on_true is evaluated, else the on_false is evaluated.
Syntax :
'''When condition becomes true, expression [on_false] is not executed and value of "True and [on_true]" is returned. Else value of "False or [on_false]" is returned. Note that "True and x" is equal to x. And "False or x" is equal to x. ''' [expression] and [on_true] or [on_false]
Example :
# Program to demonstrate conditional operator a, b = 10 , 20 # If a is less than b, then a is assigned # else b is assigned (Note : it doesn't # work if a is 0. min = a < b and a or b print ( min ) |
Output: 10
Note : The only drawback of this method is that on_true must not be zero or False. If this happens on_false will be evaluated always. The reason for that is if expression is true, the interpreter will check for the on_true, if that will be zero or false, that will force the interpreter to check for on_false to give the final result of whole expression.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
leave a comment
0 Comments