这可能是一项简单的任务,但我不确定如何在Python中实现这一目标。
我在Python中的索引上执行for循环。我有一个唯一的值,在每个迭代中定义,循环通过for循环。
我想得到NEXT或PREVIOUS for循环唯一值的值。例如,我有:
counter = 0
for rect in rects:
randomnumber = random.randint(1,101)
if counter < len(rects)-1:
if rects[counter] - rects[counter+1]
pastrand = {get random value from PREVIOUS loop iteration}
randsubtract = randomnumber - pastrand
那么如何从上一个(或下一个)迭代中获取随机数来在Python的CURRENT迭代中使用?例如:
randomnumber in rects[0]
randomnumber in rects[1]
如何从for循环中的迭代中调用特定值?
答案 0 :(得分:2)
它在当天晚些时候,但这可能会对你有所帮助..
counter = 0
random =[]
for rect in rects:
randomnumber = random.randint(1,101)
random.append(randomnumber)
if counter < len(rects)-1:
if rects[counter] - rects[counter+1]:
pastrand = random[-1]
randsubtract = randomnumber - pastrand
答案 1 :(得分:1)
选项1
使用enumerate
。如果你想要当前和下一个,你需要迭代到len(rect) - 1
。如果你想要前一个和当前的,你需要从1开始迭代。
for i, r in enumerate(rects[:-1]):
cur = r
next = rects[i + 1]
或者,
for i, r in enumerate(rects[1:]):
prev = rects[-1]
cur = r
选项2
您可以使用zip
来达到同样的效果:
for cur, next in zip(rect, rect[1:]):
...
答案 2 :(得分:1)
如上所述,您可以在分配新的循环迭代之前保存该值。
for ...:
pastrand = randomnumber
randomnumber = ...
当然,您必须在循环开始之前为randomnumber
分配一些内容,以便分配第一次完成。
另一种方法是循环遍历随机数的对,而不是每循环迭代计算一个随机数。为此,您可以使用pairwise()
工具,该工具的实施位于itertools
documentation或在more-itertools
package。循环对随机数可以这样做:
for rand1, rand2 in pairwise(repeatfunc(random.randint, None, 1, 101)):
...
我使用了另一个itertool repeatfunc()
来重复调用randint()
。 (您也可以在不使用repeatfunc()
的情况下执行此操作。)在此循环的每次迭代中,除了第一次迭代之外,rand1
将等于上一次迭代中的rand2
。
现在,您想要将每个随机数与一个矩形配对(假设rects
中有什么),对吧?您可以使用zip()
执行此操作。具体来说,zip(random_numbers, rects)
是一个随机数和矩形元组的迭代器。您可以像这样使用它:
for randomnumber, rect in zip(random_numbers, rects):
...
但是你想要迭代对,所以你将pairwise
与它结合起来:
for r1, r2 in pairwise(zip(random_numbers, rects)):
rand1, rect1 = r1
rand2, rect2 = r2
...
此处random_numbers
可能是我之前使用repeatfunc()
做的事情。这会将一个随机数与每个矩形相关联,并允许您访问每组两个连续的数字/矩形对。