擅长:python、mysql、java
<p>另一个答案是,Python的版本是:</p>
<p><code>i if i < x else x</code></p>
<p>(当然,对于这个特殊的例子,人们更喜欢写作
<code>min(i, x)</code>,因为眼睛更容易看到)</p>
<p>但是,这个表达式语法刚刚在python2.5上提供(我想是在2004左右)。在此之前,使用了以下习惯用法-但应注意,因为它容易出错:</p>
<p><code>i < x and i or x</code>-因为逻辑运算符“和”实际上计算为其链上的最后一个真值-因此,如果表达式为真,<code>i < x and i</code>计算为<code>i</code>-并且<code>or</code>运算符计算为链上的第一个真值。在这种情况下,如果<code>i < x</code>是false,那么<code>i< x and i</code>也是,第一个true值是<code>x</code>。</p>
<p>很容易看出这个构造有多容易出错,因为如果<code>i</code>的布尔值为false(例如,如果i==0),那么它将返回x,即使<code>i < x</code>的位置为true。</p>
<p>我自己,在那些日子里,曾经写过这个结构:</p>
<p>(x,i)[i<;x]</p>
<p>表达式“i<;x”的数值为“1”(true)或“0”(false),我使用此proeprty将其用作前一个元组的索引。这种方法的问题是,它总是对元组上的两个表达式求值,即使它只使用其中的一个(如果函数调用它的表达式可能变得昂贵,甚至冲突)</p>