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语句:哪一个首先是哪一秒。能否解释一下如何编译这个条件流程。
答案 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
是正常语法或语句类型
现在x
和y
可以是独立的一组陈述
您可以展开它们。
与你的情况类似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的其他领域。