如何在一行中编写嵌套的 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的区别

外循环遍历每一行,嵌套循环遍历每个字符

如何在 solr 中编写嵌套的 schema.xml?

Spark UDF:如何在每一行上编写一个 UDF 以提取嵌套结构中的特定值?

如何在 Linq 中编写嵌套的 Sql 查询 [关闭]

如何在 NestJS 中编写嵌套 DTO