我已阅读下面的链接,但它没有解决我的问题。
Does Python have a ternary conditional operator? (问题是将 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
关于python - 将 if-elif-else 语句放在一行上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14029245/