擅长:python、mysql、java
<p>表达式有两个不同的生成器表达式。一个在<code>max</code>内,有一个<code>for</code>子句。另一个嵌套在第一个<code>min</code>调用中,并有两个<code>for</code>子句。当前代码的缩进显示了它与缩进的关系,但可以更明确:</p>
<pre><code>max(
min(
abs(house - heater)
for i in [bisect.bisect(heaters, house)]
for heater in heaters[i-(i>0):i+1]
)
for house in houses
)
</code></pre>
<p>这里可以看到嵌套结构:<code>max(... for house in houses)</code>是外部生成器,而<code>min(abs(house-heater) for i in ... for heater in ...)</code>是内部生成器。你知道吗</p>
<p>内部生成器表达式可以引用外部生成器表达式中的迭代器变量<code>house</code>(就像<code>(f(x) for x in iterable)</code>中的函数调用<code>f(x)</code>引用<code>x</code>)。你知道吗</p>