python - 将 if-elif-else 语句放在一行上?

标签 python if-statement syntax

我已阅读下面的链接,但它没有解决我的问题。
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/

相关文章:

php - GAE : Push Task Queues - How to push tasks to specific Queues? - 使用 GAE-PHP

windows - 调用其他批处理文件后批处理中断

java - 使用迭代器比较数组列表中对象存储的字段

python - 如何在 Python 中将十六进制字符串转换为整数?

javascript - Uncaught SyntaxError : Unexpected identifier

python - 如何在Python中将任意大小的整数打包到字节缓冲区

python - 在 vim 中阻止缩进/取消缩进 python 代码

python - AnTLR4:INDENT 和 DEDENT 代币

if-statement - go 是否执行 if 语句中的所有条件?

jQuery - 条件中的语法错误