二维索引上的Python for循环

2024-10-03 17:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个简单的任务,但我不确定如何在Python中实现这一点。你知道吗

我在Python的索引上有一个for循环。我在for循环中循环的每个迭代中都定义了一个惟一的值。你知道吗

我想得到下一个或上一个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的当前迭代中使用呢?例如:

  randomnumber in rects[0]
  randomnumber in rects[1]

如何在for循环中调用迭代中的特定值?你知道吗


Tags: infromrectforgetlenif定义
3条回答

选项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:]):
    ...

如前所述,可以在分配新的循环迭代之前保存上一个循环迭代的值。你知道吗

for ...:
    pastrand = randomnumber
    randomnumber = ...

当然,您必须在循环开始之前给randomnumber赋值,这样赋值才能在第一次完成。你知道吗

另一种方法是对随机数对进行循环,而不是每次循环迭代计算一个随机数。为此,您可以使用pairwise()工具,其实现在^{} documentation^{} 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()做的事情。这会将一个随机数与每个矩形相关联,并允许您访问每组两个连续的数字/矩形对。你知道吗

现在已经很晚了,但这可能会让你。。你知道吗

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

相关问题 更多 >