擅长:python、mysql、java
<p>在你的例子中,我可能会写为:</p>
<pre><code>foos = (i for i in xrange(10))
bars = (j for j in foos)
bazs = (k for k in bars)
</code></pre>
<p>如果给出更具描述性的名称,我想这可能会非常清楚,我无法想象会有任何可测量的性能差异。</p>
<p>也许你想的更多的表达方式是:</p>
<pre><code>(x for x in xs for xs in ys for ys in lst)
</code></pre>
<p>——事实上,这甚至都是无效的。你得把东西按顺序放好:</p>
<pre><code>(x for ys in lst for xs in ys for x in xs)
</code></pre>
<p>我可能会这样写,作为一个快速的扁平化列表的方法,但总的来说,我认为你是在写:你通过少输入节省的时间通常是由你花在获得正确的生成器表达式上的额外时间来平衡的。</p>