擅长:python、mysql、java
<p>嗯,你的计算很复杂。此外,如果要将所有<code>r</code>值存储在一个列表中,则需要大量内存。通常,您不需要一个列表,一个生成器可能就足够处理这些值了。你知道吗</p>
<p>考虑以下代码:</p>
<pre><code>def calculate(x, y, z):
for xi, xj in combinations(x, 2):
for yi, yj in combinations(y, 2):
for zi, zj in combinations(z, 2):
yield (xi - xj) + (yi - yj) + (zi - zj)
</code></pre>
<p>它返回一个生成器,每次调用生成器的<code>next()</code>方法时只计算一个值。你知道吗</p>
<pre><code>gen = calculate(xrange(10), xrange(10, 20), xrange(20, 30))
gen.next() # returns -3
gen.next() # returns -4 and so on
</code></pre>