我已经阅读了下面的链接,但它并没有解决我的问题。
Python有三元条件运算符吗?(这个问题是关于将if-else语句压缩成一行的)
是否有一种更简单的方法来编写if-elif-else语句,使其适合一行?
例如,
if expression1:
statement1
elif expression2:
statement2
else:
statement3
或者举一个现实世界的例子:
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