¿Es posible utilizar 'else' en una lista por comprensión? [duplicar]
Aquí está el código que estaba intentando convertir en una lista por comprensión:
table = ''
for index in xrange(256):
if index in ords_to_keep:
table += chr(index)
else:
table += replace_with
¿Hay alguna manera de agregar la declaración else a esta comprensión?
table = ''.join(chr(index) for index in xrange(15) if index in ords_to_keep)
Aceptado
La sintaxis a if b else c
es un operador ternario en Python que evalúa a
si la condición b
es verdadera; de lo contrario, se evalúa como c
. Se puede utilizar en declaraciones de comprensión:
>>> [a if a else 2 for a in [0,1,0,3]]
[2, 1, 2, 3]
Entonces, para tu ejemplo,
table = ''.join(chr(index) if index in ords_to_keep else replace_with
for index in xrange(15))
Para utilizar las else
comprensiones de la lista en la programación de Python, puede probar el siguiente fragmento. Esto resolvería su problema, el fragmento se prueba en Python 2.7 y Python 3.5.
obj = ["Even" if i%2==0 else "Odd" for i in range(10)]