如何在一行中编写嵌套的 if-elif-else 条件? [复制]
Posted
技术标签:
【中文标题】如何在一行中编写嵌套的 if-elif-else 条件? [复制]【英文标题】:How to write nested if-elif-else condition in one line? [duplicate] 【发布时间】:2021-04-21 07:40:00 【问题描述】:假设我有一个条件检查,例如:
if a > b:
m = a
else:
m = b
然后我知道它可以写成一行:
m = a if a > b else b
如果条件检查中也存在elif
语句,如何编写类似的单行表达式?对于类似的东西:
if a > b:
m = a
elif a > c:
m = c
else:
m = b
【问题讨论】:
看到这个:pythoncentral.io/… 沉默的反对者...SMH。 我没有投反对票,但我想这个问题在 SO 中被问了很多次,这就是为什么有人投反对票的原因。 我做这个问题并不是出于恶意,但有时标题无济于事,这就是为什么我没有找到一个平等的问题。此外,当我查看我的问题时,该网站并没有要求我寻找另一个相同的问题 我明白 :) 尝试像这样if elif else one line python
按关键字(而不是句子)搜索
【参考方案1】:
假设你的条件语句是这样的:
if a > b:
m = a
elif a > c:
m = c
else:
m = b
你可以把它放在单行的嵌套 if-else 中:
m = a if a > b else (c if a > c else b)
在上述语句中,您甚至可以跳过括号(..)
的使用。我添加它是为了解释执行顺序。以下不带括号的代码将返回相同的答案:
m = a if a > b else c if a > c else b
一般来说,对于这样的代码:
if COND_1:
m = A
elif COND_2:
m = B
elif COND_3:
m = C
else:
m = D
你可以让你的一个衬里嵌套条件语句为:
m = A if COND_1 else (B if COND_2 else (C if COND_3 else D))
【讨论】:
【参考方案2】:见this回答
value_when_true if 条件 else value_when_false
'Yes' if fruit == 'Apple' else 'No'
【讨论】:
【参考方案3】:elif 条件的语法如下。
a = 34
b = 42
c = 54
m = a if a > b else (b if b > c else c)
print(m)
结果:54
【讨论】:
【参考方案4】:你可以像这样链接条件:
m = "a" if CONDITION_1 else "b" if CONDITION_2 else "c"
【讨论】:
有可能,谢谢以上是关于如何在一行中编写嵌套的 if-elif-else 条件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
python:while循环中的b/w multi-ifs和if-elif-else的区别