压缩if语句

时间:2015-03-03 14:20:50

标签: python if-statement

我想写这个if语句尽可能紧凑(避免重复代码)

if length == 10 if boolean is False or length == 13 if boolean is True:

PyCharm不喜欢的部分是

if boolean is True

它要求冒号。

PyCharm不允许我运行它。如果有人有一个很好的紧凑解决方案吗?

2 个答案:

答案 0 :(得分:3)

我想你的意思

if (not boolean and length == 10) or (boolean and length == 13):

括号不是必需的,但我认为它们有助于提高可读性。 @ jonsharpe的解决方案甚至更短,只需要评估boolean一次,但它可能更难阅读,特别是如果你不熟悉Python的三元表达式。

从不使用is进行相等性比较(==的用途是什么),但绝不应将布尔类型明确地与True进行比较或者False无论如何。

答案 1 :(得分:2)

您可以使用conditional expression(也称为"三元" )更简洁地写出来:

if length == 13 if boolean else length == 10:

或等同于:

if length == (13 if boolean else 10):

根据文件:

  

表达式x if C else y首先评估条件 C not x );如果 C 为真,则计算 x 并返回其值;否则,将评估 y 并返回其值。