紧凑的写作方式(a + b == c或a + c == b或b + c == a)

问题:

是否有一个更紧凑或pythonic的方式来写布尔表达式

a + b == c or a + c == b or b + c == a

我想出了

a + b + c in (2*a, 2*b, 2*c)

但这有点奇怪。

回答:

如果我们看看Python的禅,我的重点是:

蒂姆·彼得斯(Tim Peters)的Python之禅
美丽比丑陋好
明确比隐含更好。
简单比复杂更好。
复杂比复杂更好。
平好比嵌套。
稀疏比密集好。
可读性计数。
特殊情况不足以违反规则。
尽管实用性是纯粹的。
错误绝不能默默地传递。
除非有明确的沉默。
面对歧义,拒绝猜测的诱惑。
应该有一个 – 最好只有一个 – 显而易见的办法。
尽管如此,除非你是荷兰人,否则最初可能不明显。
现在比以往更好。
虽然现在从来没有比现在更好。
如果实施难以解释,这是一个坏主意。
如果实现很容易解释,可能是个好主意。
命名空间是一个很棒的主意 – 让我们做更多的事情!

最具挑战性的解决方案是最清晰,最简单,最容易解释的解决方案:

a + b == c or a + c == b or b + c == a

更好的是,你甚至不需要知道Python了解这段代码! that容易。这是毫无保留的最好的解决方案。还有一些是智力手淫。
此外,这可能是最好的解决方案,因为它是所有短路建议中唯一的解决方案。如果a + b == c,只能进行一次添加和比较。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Compact way of writing (a + b == c or a + c == b or b + c == a)

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 39 = 43