<p>Python列表理解语法使在理解中过滤值变得容易。例如:</p>
<pre><code>result = [x**2 for x in mylist if type(x) is int]
</code></pre>
<p>将返回mylist中整数平方的列表。但是,如果测试涉及一些(代价高昂的)计算,并且您希望对结果进行筛选,会怎样?一种选择是:</p>
<pre><code>result = [expensive(x) for x in mylist if expensive(x)]
</code></pre>
<p>这将导致一个非“false”昂贵(x)值的列表,但是每x调用两次昂贵的()。是否有一个理解语法允许您在每x只调用昂贵一次的情况下执行此测试?</p>