es mejor que usar la instrucción if-else en python

Posible duplicado:
Poniendo una simple sentencia if-then en una línea

Estoy trabajando en una expresión de python y quiero que esa expresión esté comprimida en lugar de usar la instrucción if else.

s = [1, 2, 3, 4] if len(s)>5: print s.index(5) else: print 'cant print' 

¿Hay una mejor manera que usar como si otra statement?

Tu puedes hacer:

 s = [1, 2, 3, 4] print 'y' if len(s) > 5 else 'n' 

Sin embargo, no creo que esto haga que el código sea más legible (de un vistazo). También tenga en cuenta que if y de lo else no crea un bucle, son simplemente declaraciones para el flujo de control. Los bucles se escriben usando for y while .

Corto, pero muy confuso (no hagas esto):

 print 'ny'[len(s) > 5] 

[editar] la razón por la que nunca debes hacer esto, es porque usa propiedades del lenguaje que son poco conocidas para la mayoría de las personas, es decir, que bool es una subclase de int. En la mayoría de las situaciones en las que se encuentra escribiendo un código como el OP, generalmente es mejor crear una variable de marca

 s_is_long = len(s) > 5 

luego puede usar cualquiera de las formas más apropiadas para escribir la impresión, por ejemplo:

 print 'y' if s_is_long else 'n' 

o

 print {True: 'y', False: 'n'}[s_is_long] 

o el más legible de todos …

 if s_is_long: print 'y' else: print 'n' 

En este caso podrías usar el bloque try / except:

 try: print s.index(5) except ValueError: print "5 not in list" 

Corto y claro:

 s = [1, 2, 3, 4] output = {True: 'y',False: 'n'} print output[len(s) > 5] 

Otra variación:

 print len(s)>5 and 'y' or 'n' 

Recién añadido para completar. ¡No intentes esto en casa! 😉