擅长:python、mysql、java
<p>这个怎么样:</p>
<pre><code>>>> sum(sum(x) for x in hostel.itervalues())
285.3
</code></pre>
<p><code>(sum(x) for x in hostel.itervalues())</code>返回包含所有列表之和的生成器表达式:</p>
<pre><code>>>> gen = (sum(x) for x in hostel.itervalues())
>>> gen
<generator object <genexpr> at 0xa51e644>
</code></pre>
<p>此<code>genexp</code>的内容:</p>
<pre><code>>>> list(gen)
[36.0, 36.0, 35.3, 36.0, 36.0, 30, 76.0]
</code></pre>
<p>现在我们把genexp传给sum,它会把这些数字加起来:</p>
<pre><code>#due to list call above the generator got consumed, so we've to create a new generator again
>>> gen = (sum(x) for x in hostel.itervalues())
>>> sum(gen)
285.3
</code></pre>