Operador ternario en Python

Los operadores ternarios, también conocidos como expresiones condicionales, son operadores que evalúan algo en función de que una condición sea verdadera o falsa. Se agregó a Python en la versión 2.5
Simplemente permite probar una condición en una sola línea reemplazando el if-else multilínea haciendo que el código sea compacto.
 

Sintaxis: 

[on_true] if [expression] else [on_false] 
  • Método simple para usar el operador ternario:

Python

# 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)

Producción: 

10
  • Método directo usando tuplas, Diccionario y lambda

Python

# Python program to demonstrate ternary operator
a, b = 10, 20
  
# Use tuple for selecting an item
# (if_test_false,if_test_true)[test]
# if [a<b] is true it return 1, so element with 1 index will print
# else if [a<b] is false it return 0, so element with 0 index will print
print( (b, a) [a < b] )
  
# Use Dictionary for selecting an item
# if [a < b] is true then value of True key will print
# else if [a<b] is false then value of False key will print 
print({True: a, False: b} [a < b])
  
# lambda 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]())

Producción:

10
10
10
  • El operador ternario se puede escribir como if-else anidado:

Python

# 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")

El enfoque anterior se puede escribir como: 
 

Python

# 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")

Producción:

 b is greater than a
  • Para usar la función de impresión en el operador ternario, sea como: – 

Ejemplo: encuentre el número más grande entre 2 usando el operador ternario en python3

Python3

a=5
b=7
  
# [statement_on_True] if [condition] else [statement_on_false] 
  
print(a,"is greater") if (a>b) else print(b,"is Greater")

Producción:

7 is Greater

Puntos importantes: 

  • Primero se evalúa la condición dada (a < b), luego se devuelve a o b en función del valor booleano devuelto por la condición
  • El orden de los argumentos en el operador es diferente al de otros lenguajes como C/C++ (ver Operadores ternarios de C/C++ ).
  • Las expresiones condicionales tienen la prioridad más baja entre todas las operaciones de Python.

Método utilizado antes de 2.5 cuando el operador ternario no estaba presente 
En una expresión como la que se muestra a continuación, el intérprete verifica la expresión si es verdadera y luego se evalúa on_true, de lo contrario se evalúa on_false.
 

Sintaxis: 

'''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] 

Ejemplo : 

Python

      
# 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)

Producción:

10

Nota: El único inconveniente de este método es que on_true no debe ser cero ni False . Si esto sucede, on_false se evaluará siempre. La razón de esto es que si la expresión es verdadera, el intérprete verificará on_true, si será cero o falso, obligará al intérprete a verificar on_false para obtener el resultado final de toda la expresión.

Este artículo es una contribución de Mayank Rawat y fue mejorado por Shubham Bansal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *