我已经阅读了下面的链接,但它并没有解决我的问题。
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]
这也取决于你表达的性质。关于“不这样做”的其他答案的一般性建议对于一般的语句和一般的表达是相当有效的。
但如果你所需要的只是一个“分派”表,比如,根据给定选项的值调用不同的函数,你可以把要调用的函数放在字典中。
喜欢的东西:
def save():
...
def edit():
...
options = {"save": save, "edit": edit, "remove": lambda : "Not Implemented"}
option = get_input()
result = options[option]()
而不是if-else:
if option=="save":
save()
...
你可以选择使用dict的get方法:
x = {i<100: -1, -10<=i<=10: 0, i>100: 1}.get(True, 2)
如果保证其中一个键的值为True,则不需要get方法:
x = {i<0: -1, i==0: 0, i>0: 1}[True]
理想情况下,最多只有一个键值为True。如果有多个键的值为True,则结果似乎不可预测。