将if-elif-else语句放在一行上?
将if-elif-else语句放在一行上?
我已经阅读了下面的链接,但它没有解决我的问题。
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]
admin 更改状态以发布 2023年5月24日
不,这是不可能的(至少不是使用任意语句),也不是可取的。把所有内容都放在一行上可能会违反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