¿Es posible utilizar 'else' en una lista por comprensión? [duplicar]

Resuelto Josh asked hace 14 años • 6 respuestas

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)
Josh avatar Jun 01 '10 23:06 Josh
Aceptado

La sintaxis a if b else ces un operador ternario en Python que evalúa asi la condición bes 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))
Amber avatar Jun 01 '2010 17:06 Amber

Para utilizar las elsecomprensiones 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)]
Chitrank Dixit avatar Feb 03 '2016 13:02 Chitrank Dixit