Python for循环二维索引

时间:2017-10-04 23:40:08

标签: python arrays for-loop indexing

这可能是一项简单的任务,但我不确定如何在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循环中的迭代中调用特定值?

3 个答案:

答案 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()做的事情。这会将一个随机数与每个矩形相关联,并允许您访问每组两个连续的数字/矩形对。