擅长:python、mysql、java
<p>首先,您应该使用pandas聚合函数,而不是尝试遍历列表并自己执行。现在还不清楚这个函数到底应该做什么:</p>
<pre><code>def GetShiftingWindows(thelist, size):
return [ thelist[x:x+size] for x in range( len(thelist) - size + 1 ) ]
</code></pre>
<p>但它所做的是创建一个非常大的字典。考虑投资<a href="https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python">yield</a>。当你使用yield时,你没有把这本大字典存储在内存中。你知道吗</p>
<pre><code>def GetShiftingWindows(thelist, size):
for x in range( len(thelist) - size + 1 ):
yield thelist[x:x+size]
</code></pre>
<p>您可以使用<a href="https://stackoverflow.com/questions/94935/what-is-the-difference-between-range-and-xrange-functions-in-python-2-x">xrange() instead of range()</a>挤出另外几个字节。你知道吗</p>
<p>yield和xrange的优点是它不在内存中存储列表。相反,生成一个延迟计算的iterable,它的内存需求更小。你知道吗</p>