擅长:python、mysql、java
<p>作为第一步,我会改变</p>
<pre><code>return [ thelist[x:x+size] for x in range( len(thelist) - size + 1 ) ]
</code></pre>
<p>进入</p>
<pre><code>return ( thelist[x:x+size] for x in range( len(thelist) - size + 1 ) )
</code></pre>
<p>然后您将得到一个生成器,您的代码将在内存中创建整个子列表,生成器方法将在每次<code>for</code>迭代中只生成一个子列表</p>
<p>如果使用python2,还可以将<code>range</code>(一次生成整个列表)更改为<code>xrange</code>(同样,生成器每次调用只生成一个值)</p>
<p>最后,您可以使用<code>islice</code>返回迭代器生成器:</p>
<pre><code>from itertools import islice
</code></pre>
<p>以及</p>
<pre><code>return ( islice(thelist, x, x + size) for x in range( len(thelist) - size + 1 ) )
</code></pre>