¿Cómo condensar if/else en una sola línea en Python? [duplicate]

2 minutos de lectura

avatar de usuario
AnovaVarianza

Posible duplicado:

Operador ternario de Python
Poner una simple declaración si-entonces en una línea

¿Hay alguna manera de comprimir un if/else declaración a una línea en Python?

A menudo veo todo tipo de atajos y sospecho que también se puede aplicar aquí.

  • stackoverflow.com/questions/1686390/… docs.python.org/reference/compound_stmts.html

    – TheZ

    17 de julio de 2012 a las 19:15


  • Esa es la pregunta que quería vincular: stackoverflow.com/questions/394809/python-ternary-operator

    – está bien

    17 de julio de 2012 a las 19:17

  • otra referencia: stackoverflow.com/questions/7778400/…

    – payaso

    17 de julio de 2012 a las 19:17

  • @ProjectAnova Voté negativamente su pregunta porque no dedicó ni un segundo a buscar su pregunta en Google.

    – está bien

    17 de julio de 2012 a las 19:18

  • Mi cuenta ha sido bloqueada para no hacer más preguntas… ¡Qué broma!

    – AnovaVarianza

    17 de julio de 2012 a las 19:24


avatar de usuario
levon

Un ejemplo de la forma en que Python hace expresiones “ternarias”:

i = 5 if a > 7 else 0

se traduce como

if a > 7:
   i = 5
else:
   i = 0

En realidad, esto es útil cuando se usan listas de comprensión o, a veces, en declaraciones de retorno; de lo contrario, no estoy seguro de que ayude mucho a crear código legible.

El problema de la legibilidad se discutió extensamente en esta pregunta SO reciente de una mejor manera que usar la declaración if-else en python.

También contiene varios otros inteligente (y algo ofuscado) maneras de realizar la misma tarea. Vale la pena leerlo solo en base a esas publicaciones.

  • ¿Cómo lo uso en la declaración de devolución? return count if (count * (distance < within_radius)) > 0 else (continue)

    – technazi

    31/10/2018 a las 23:38

de pitón if se puede utilizar como un operador ternario:

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

  • Solo quiero agregar la sintaxis de línea de comando “verdadera” para eso. He buscado mucho cómo hacerlo, pero ninguna respuesta contiene esta información: $ python -c “import sys; var=1; [ sys.stdout.write(‘POS\n’) if var>0 else sys.stdout.write(‘NEG\n’)]”

    – Alexander Samoylov

    8 oct 2018 a las 10:38

Solo para usar como valor:

x = 3 if a==2 else 0

o

return 3 if a==2 else 0

  • Esto no se limita a la asignación. Se puede utilizar en cualquier expresión.

    – BrenBarn

    17 de julio de 2012 a las 19:16

  • Excelente. Esta podría ser la sintaxis más fácil y loca.

    – Gaurav Koradiya

    20 de enero de 2020 a las 11:36

Existe la expresión condicional:

a if cond else b

pero esto es una expresión, no una declaración.

En declaraciones if, el if (o elif o else) se puede escribir en la misma línea que el cuerpo del bloque si el bloque es solo uno como:

if something: somefunc()
else: otherfunc()

pero esto se desaconseja por una cuestión de estilo de formato.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad