擅长:python、mysql、java
<p>我不知道你的价值观,所以我们假设:</p>
<pre><code>>>> l = list(range(10))
>>> a = 4
>>> b = 7
</code></pre>
<p>如果您将代码行分解为几个步骤并打印中间结果,则会更清楚:</p>
<pre><code>>>> [1 for i in l if i >= a and i <= b]
[1, 1, 1, 1]
</code></pre>
<p>这就是传递给<code>sum</code>的内容。(当您去掉方括号时,它隐式地成为一个生成器,但这是它作为列表的样子。)</p>
<p>如果你不理解理解力,它相当于:</p>
<pre><code>>>> result = []
>>> for i in l:
... if i >= a and i <= b:
... result.append(1)
...
>>> result
[1, 1, 1, 1]
</code></pre>
<p>求和相当于将<code>result = []</code>改为<code>result = 0</code>,将<code>result.append(1)</code>改为<code>result += 1</code>。你知道吗</p>