You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python嵌套循环中列迭代范围随行迭代递减的问题求助

问题根源与修复方案

问题出在循环变量和函数参数重名:

  • 你用函数参数的r作为外层循环变量,虽然外层循环的range(r)初始用的是参数值,但内层循环的问题更关键。
  • 内层循环直接复用了参数c作为变量名,第一次进入内层时,range(c)用的是传入的初始列数(比如10),但循环结束后c会变成最后一次迭代的索引(比如9)。下一次外层循环执行时,内层的range(c)就会用这个被修改后的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)
    # 替换循环变量名,不再复用参数r、c
    for row in range(r):
        for col in range(c):
            distancelist = []
            for i in range(len(sites)):
                distancelist.append(distance2(row, col, sites[i][0], sites[i][1]))
            if len(set(distancelist)) < 3:
                map1[row][col] = "X"
            else:
                map1[row][col] = distancelist.index(min(distancelist))
    return map1

修改后,循环时使用的r和c始终是函数传入的原始行列数,列的迭代范围就不会递减了。

内容的提问来源于stack exchange,提问作者nic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:28:17