<p>如前所述,可以在分配新的循环迭代之前保存上一个循环迭代的值。你知道吗</p>
<pre><code>for ...:
pastrand = randomnumber
randomnumber = ...
</code></pre>
<p>当然,您必须在循环开始之前给<code>randomnumber</code>赋值,这样赋值才能在第一次完成。你知道吗</p>
<p>另一种方法是对随机数对进行循环,而不是每次循环迭代计算一个随机数。为此,您可以使用<code>pairwise()</code>工具,其实现在<a href="https://docs.python.org/3/library/itertools.html" rel="nofollow noreferrer">^{<cd3>} documentation</a>或<a href="https://pypi.python.org/pypi/more-itertools" rel="nofollow noreferrer">^{<cd4>} package</a>中给出。在成对的随机数上循环可以这样做:</p>
<pre><code>for rand1, rand2 in pairwise(repeatfunc(random.randint, None, 1, 101)):
...
</code></pre>
<p>我使用了另一个itertool <code>repeatfunc()</code>,反复调用<code>randint()</code>。(您也可以不使用<code>repeatfunc()</code>来完成此操作。)在该循环的每个迭代中,除了第一次迭代之外,<code>rand1</code>将等于上一次迭代的<code>rand2</code>。你知道吗</p>
<p>现在,您要将每个随机数与一个矩形配对(假设这就是<code>rects</code>中的内容),对吗?你可以使用<code>zip()</code>。具体地说,<code>zip(random_numbers, rects)</code>是对一个随机数和一个矩形的元组的迭代器。你可以这样使用它:</p>
<pre><code>for randomnumber, rect in zip(random_numbers, rects):
...
</code></pre>
<p>但是你需要迭代成对的,所以你把<code>pairwise</code>和它结合起来:</p>
<pre><code>for r1, r2 in pairwise(zip(random_numbers, rects)):
rand1, rect1 = r1
rand2, rect2 = r2
...
</code></pre>
<p>这里<code>random_numbers</code>可能就是我之前用<code>repeatfunc()</code>做的事情。这会将一个随机数与每个矩形相关联,并允许您访问每组两个连续的数字/矩形对。你知道吗</p>