我有一个嵌套的 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
因为你有
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: