¿Cómo evitar múltiples planos si las condiciones en python?

Considere el fragmento:

def check_conditions(range_of_numbers): #method returns a list containing messages list1 = [] if condition1: list1.append("message1") if condition2: list1.append("message2") if condition3: list1.append("message3") try: for i in range_of_numbers: int(i) except ValueError: list1.append("message4") return message 

Quiero tener una lista en los mensajes con solo si se cumplen las condiciones. No uso varios ifs, ya que se agrega a la complejidad del código y cada vez que se agrega un nuevo parámetro, terminaría agregando una nueva condición if.

simplemente haga un bucle en las parejas de condición / mensaje por ejemplo:

 for condition,message in ((condition1,"message1"),(condition2,"message2"),(condition3,"message3")): if condition: list1.append(message) 

si las condiciones son exclusivas, considere agregar un break si una condición coincide.

versión de la lista de comprensión (aunque más “pythonic” pero no es posible interrumpir en la primera condición):

 list1 = [message for condition,message in ((condition1,"message1"),(condition2,"message2"),(condition3,"message3")) if condition] 

Como suplemento de Jean-FrançoisFabre.

Se cumplen todas las condiciones.

 tmp = [message for condition, message in ((condition1, "message1"), (condition2, "message2"),(condition3, "message3")) if condition] 

Las condiciones son exclusivas.

 tmp = next((message for condition, message in ((condition1, "message1"), (condition2, "message2"), (condition3, "message3")) if condition), None)