我可以在Python的一行中编写if else语句吗?

时间:2014-04-06 00:08:33

标签: python if-statement shortcut

我不是在谈论三元运算符。我可以在值表达式之外的一行中编写if else语句吗?我想缩短这段代码。

if x == 'A':
    return True
if x == 'B':
    return True
if x == 'C':
    return True
return False

4 个答案:

答案 0 :(得分:6)

您可以像这样使用in运算符:

return x in ('A', 'B', 'C')

Python 3.2+

return x in {'A', 'B', 'C'}

来自docs

  

Python的窥孔优化器现在可识别{1, 2, 3}中的x等模式   作为一组常量的成员资格的测试。优化器   将set重新定义为frozenset并存储预先建立的常量。

     

现在速度惩罚消失了,开始写作是切实可行的   使用set-notation进行成员资格测试。

答案 1 :(得分:5)

您可以使用in

来缩短代码
return x in ("A", "B", "C")

或者,如果x是单个字符:

return x in "ABC"

答案 2 :(得分:3)

如果您的检查比集合中的成员资格更复杂,并且您希望减少代码行数,则可以使用conditional expressions

return True if x == 'A' else True if x == 'B' else True if x == 'C' else False

答案 3 :(得分:1)

如果您需要对序列中的许多项应用相同的测试,您可能需要使用any函数:

return any(x == c for c in "ABC")

这适用于更复杂的测试(使in无法处理它们)和对于链式条件表达式来说太长的序列。考虑浮点数的“近似相等”测试:

return any(abs(x - n) < epsilon for n in big_sequence_of_floats)