Múltiples condiciones de IF en una lista de python

Me preguntaba, ¿es posible poner múltiples if condiciones en una lista de comprensión? No encontré nada como esto en los documentos.

Quiero poder hacer algo como esto

 ar=[] for i in range(1,n): if i%4 == 0: ar.append('four') elif i%6 == 0: ar.append('six') else: ar.append(i) 

utilizando una lista de comprensión. ¿Cómo puedo hacerlo?

¿Es esto posible? Si no, ¿cuál sería la forma más elegante (pythonica) de lograr esto?

Qué tal si

 ar = [('four' if i % 4 == 0 else ('six' if i % 6 == 0 else i)) for i in range(1, n)] 

Por ejemplo, si n = 30 esto es

 [1, 2, 3, 'four', 5, 'six', 7, 'four', 9, 10, 11, 'four', 13, 14, 15, 'four', 17, 'six', 19, 'four', 21, 22, 23, 'four', 25, 26, 27, 'four', 29] 

ETA: Aquí es cómo podría aplicar una lista de condiciones:

 CONDITIONS = [(lambda i: i % 4 == 0, "four"), (lambda i: i % 6 == 0, "six"), (lambda i: i % 7 == 0, "seven")] def apply_conditions(i): for condition, replacement in CONDITIONS: if condition(i): return replacement return i ar = map(apply_conditions, range(0, n)) 

Puede poner su lógica en una función separada, y luego tener la elegancia de la comprensión de la lista junto con la legibilidad de la función:

 def cond(i): if i % 4 == 0: return 'four' elif i % 6 == 0: return 'six' return i l=[cond(i) for i in range(1,n)]