在python中如何避免多个平坦if条件?

在python中如何避免多个平坦if条件?,python,if-statement,methods,Python,If Statement,Methods,考虑一下这个片段: 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(

考虑一下这个片段:

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

我希望在中有一个列表,仅当满足条件时才显示消息。我不使用多个if,因为它增加了代码的复杂性,每次添加新参数时,我都会添加一个新的if条件。

只需循环条件/消息对,例如:

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

如果条件是排他性的,如果条件匹配,请考虑添加<代码>中断< /代码>。< /P> 列表理解版本(更“pythonic”,但不可能在第一个条件匹配时中断):


作为让·弗朗索瓦·法布的补充

所有条件都满足 条件是排他性的
是否要动态创建这些条件?因为如果没有,那么你当前的书写方式是可读的,完全可以,我不会改变。看看。为什么不把条件和消息放在列表中,然后压缩它们呢?是的,这也行。但是由于OP代码对这对夫妇进行了硬编码,因此一个元组硬编码列表比压缩两个硬编码列表要好。如果数据出现在两个列表中,则会有所不同。
list1 = [message for condition,message in ((condition1,"message1"),(condition2,"message2"),(condition3,"message3")) if condition]
tmp = [message for condition, message in ((condition1, "message1"),
       (condition2, "message2"),(condition3, "message3")) if condition]
tmp = next((message for condition, message in ((condition1, "message1"),         
           (condition2, "message2"), (condition3, "message3")) if condition), None)