gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:08:55 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com