有没有更简单的方法来编写 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 的禅宗:“可读性很重要”。(import this在 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