如何在Python中检查单行if else else if条件

时间:2015-04-09 11:12:32

标签: python python-2.7 python-3.x if-statement

holiday_type

我有三个不同的答案
holiday_type = Approved
holiday_type = Confirmed
holiday_type = both

Python代码:

 result = ['confirm','validate'] if holiday_type == 'both' else ['confirm'] if holiday_type == 'Confirmed' else ['validate']

结果:

['validate']                // Approved
['confirm']                 // Confirmed
['confirm', 'validate']     // both

我无法理解如何编译这个if else语句:哪一个首先是哪一秒。能否解释一下如何编译这个条件流程。

6 个答案:

答案 0 :(得分:3)

不要这样做。可读性很重要。

if holiday_type == 'both':
    result = ['confirm','validate']
elif  holiday_type == 'Confirmed':
    result = ['confirm']
else:
    result = ['validate']

答案 1 :(得分:2)

声明

<expression1> if <condition> else <expression2>  

首先评估condition;如果它返回True,则会评估expression1以提供结果,否则为expression2

 result = ['confirm','validate'] if holiday_type == 'both' else ['confirm'] if holiday_type == 'Confirmed' else ['validate']  

['confirm'] if holiday_type == 'Confirmed' else ['validate']expression2,如果将holiday_type == 'both'评估为False,则会对其进行评估。

答案 2 :(得分:0)

这是一个嵌套的if-else

一般而言 - x if cond else y是正常语法或语句类型

现在xy可以是独立的一组陈述

您可以展开它们。

与你的情况类似y是相同的陈述 - &gt; x if cond else y 所以它变成

x if cond else x1 if cond2 else y1

答案 3 :(得分:0)

result = (['confirm','validate'] if holiday_type == 'both' else
          ['confirm'] if holiday_type == 'Confirmed' else
          ['validate'])

答案 4 :(得分:0)

如果不同情况下的表达式不同,这将有效,

  

expr1 如果 condition1 其他 expr2 如果 condition2 else expr

例如:

>>> a = -5
>>> "negative" if a<0 else "zero" if a==0 else "positive"
'negative'
>>> a = 5
>>> "negative" if a<0 else "zero" if a==0 else "positive"
'positive'
>>> a = 0
>>> "Negative" if a<0 else "zero" if a==0 else "positive"
'zero'

问题示例:

result = ['confirm','validate'] if holiday_type == 'both' else ['confirm'] if holiday_type == 'Confirmed' else ['validate']

答案 5 :(得分:0)

我要向其他人借款,但是如果通过将这些语句翻译成多行来解释这些oneline if语句,则会提供更为通用的解释。

expr1 if condition1 else expr2 if condition2 else expr

转换为

if condition1:
  expr1
elif condition2:
  expr2
else:
  expr

请记住,相同的语法风格用于列表推导和python的其他领域。