我不是在谈论三元运算符。我可以在值表达式之外的一行中编写if else语句吗?我想缩短这段代码。
if x == 'A':
return True
if x == 'B':
return True
if x == 'C':
return True
return False
答案 0 :(得分:6)
您可以像这样使用in
运算符:
return x in ('A', 'B', 'C')
return x in {'A', 'B', 'C'}
来自docs:
Python的窥孔优化器现在可识别
{1, 2, 3}
中的x等模式 作为一组常量的成员资格的测试。优化器 将set
重新定义为frozenset
并存储预先建立的常量。现在速度惩罚消失了,开始写作是切实可行的 使用set-notation进行成员资格测试。
答案 1 :(得分:5)
答案 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)