放一个if

我已阅读下面的链接,但没有解决我的问题。
Python是否有三元条件运算符? (这个问题是关于将if-else语句压缩到一行)

是否有更简单的方法来编写if-elif-else语句,以便它适合于一行?
例如,

if expression1:
   statement1
elif expression2:
   statement2
else:
   statement3

[UPDATE]

if i>100:
    x=2
elif i<100:
    x=1
else:
    x=0

我只是觉得,如果上面的例子可以用下面的方式编写,它可能看起来更简洁。

x=2 if i>100 elif i<100 1 else 0 [WRONG]

不,这是不可能的(至少不能用任意的陈述),也不可取。 在一行中拟合所有内容很可能会违反PEP-8规定行的长度不应超过80个字符。

这也违背了Python的禅宗:“可读性计数”。 (在Python提示符处import this来读取整个事物)。

您可以在Python中使用三元表达式,但只能用于表达式,不能用于语句:

>>> a = "Hello" if foo() else "Goodbye"

编辑:

您的修订问题现在显示,除了分配的值之外,这三个语句是相同的。 在这种情况下,链式三元运算符确实有效,但我仍然认为它的可读性较差:

>>> i=100
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
0
>>> i=101
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
2
>>> i=99
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
1

如果你只需要不同情况下的不同表达式,那么这可能适用于你:

expr1 if condition1 else expr2 if condition2 else expr

例如:

a = "neg" if b<0 else "pos" if b>0 else "zero"

只需在else语句中嵌套另一个if子句。 但是这并没有使它看起来更漂亮。

>>> x=5
>>> x if x>0 else ("zero" if x==0 else "invalid value")
5
>>> x = 0
>>> x if x>0 else ("zero" if x==0 else "invalid value")
'zero'
>>> x = -1
>>> x if x>0 else ("zero" if x==0 else "invalid value")
'invalid value'
链接地址: http://www.djcxy.com/p/42715.html

上一篇: Putting an if

下一篇: Is "else if" faster than "switch() case"?