我的嵌套循环范围随着每次迭代而减小

问题描述 投票:0回答:1

我有一个嵌套的 for 循环来迭代我的矩阵,其中 r 和 c 是行和列。

然而,不知何故,每次迭代,c 都会减少。

例如,当 r = 0 时,c 将从 0 迭代到 9

当r = 1时,c将从0迭代到8

当r = 2时,c将从0迭代到7

我通过可视化 pythontutor 上的代码发现了这一点

我尝试将一些测试值放入范围内,例如10 并且它对 c 和 r 都完美迭代(又名它从 0 迭代到 9),所以我不知道问题是什么:(

我的代码如下所示

def PDMap(r,c,sites):
    def distance2(x1,y1,x2,y2):
        return (x1-x2)**2 +(y1-y2)**2
    numberofsite= len(sites) 
    map1 = createZeroMatrix(r,c)
    for r in range(r):
        for c in range(c): #why is c decreasing??
            distancelist = []
            for i in range(len(sites)):
                distancelist.append(distance2(r,c,sites[i][0],sites[i][1]))
            if len(set(distancelist)) < 3:
                map1[r][c] = "X"
            else:
                map1[r][c]= distancelist.index(min(distancelist))
    return map1
python for-loop multidimensional-array iteration nested-loops
1个回答
3
投票

因为你有

for c in range(c)

循环的第一次迭代,变量

c
被覆盖。尝试做其他事情,例如
for new_c in range(c)

所以你的代码应该变成:

def PDMap(r,c,sites):
    def distance2(x1,y1,x2,y2):
        return (x1-x2)**2 +(y1-y2)**2
    numberofsite= len(sites) 
    map1 = createZeroMatrix(r,c)
    for r in range(r):
        for new_c in range(c): #why is c decreasing??
            distancelist = []
            for i in range(len(sites)):
                distancelist.append(distance2(r,new_c,sites[i][0],sites[i][1]))
            if len(set(distancelist)) < 3:

© www.soinside.com 2019 - 2024. All rights reserved.