擅长:python、mysql、java
<p>正如您正确推测的那样,大多数Python实现并没有通用的子表达式优化,因此您的第一个表达式确实会在每次迭代中调用len(x)两次。所以为什么不只有两种理解:</p>
<pre><code>a = [len(x) for x in list]
b = [x for x in a if x > 1]
</code></pre>
<p>它进行两次传递,但每次只调用len()一次。如果这个功能很贵的话,那可能是个胜利。我得给这件事计时才能确定。在</p>
<p>赛博的嵌套版本本质上是一样的。在</p>