想要在一个唯一的上下文中为矩阵的每个元素添加一个特定的值

2024-04-19 03:24:50 发布

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

def increaseEach(arr,n1,n2):
    for i in range(0,len(arr)):
            arr[i][0] += n1
            arr[i][1] += n2
    return arr    

while counter0 < count0:
        for y in range(0,5):
            if x % 2 == 0:
                countEven += 1
                for j in crnew:
                    crnew = increaseEach(j,2,-2)
                sc = (crnew[y][0],crnew[y][1])
                ec = (crnew[y+4][0],crnew[y+4][1])
                pg.draw.line(screen,red,sc,ec,1)

            if x % 2 == 1:
                countOdd+= 1
                for j in crnew2:
                    crnew2 = increaseEach(j,2,-2)
                sc2 = (crnew2[y][0],crnew[y][1])
                ec2 = (crnew2[y+4][0],crnew[y+4][1])
                pg.draw.line(screen,red,sc2,ec2,1)

crnew和crnew2都是矩阵,这两个循环中的j是crnew和crnew2中的单个数组。我得到以下错误报告:

line 144, in <module>
    crnew = increaseEach(j,2,-2)

line 34, in increaseEach
    arr[i][0] += n1

TypeError: 'int' object is not subscriptable

我很困惑,这个bug的源头是在第34行的increaseEach函数中定义的,还是后来在代码中尝试使用的。 谢谢。你知道吗


Tags: inforiflinerangepgscarr
1条回答
网友
1楼 · 发布于 2024-04-19 03:24:50

您正在从矩阵中传递行,并希望该行中的元素更新了。那个是正确的。当结果行(列表)来自您在原始矩阵中保存的函数时。更新了矩阵。到单行。ir从n x m矩阵大小改为1x m大小。在下一次迭代中,当要执行函数的元素而不是整行(list)时,一个int变量消失了,这会导致int不可描述的错误。你知道吗

您需要将crnew2 = increaseEach(j,2,-2)更新为j = increaseEach(j,2,-2),将crnew = increaseEach(j,2,-2)更新为j= increaseEach(j,2,-2)

def increaseEach(arr,n1,n2):
    for i in range(0,len(arr)):
            arr[i][0] += n1
            arr[i][1] += n2
    return arr    

while counter0 < count0:
        for y in range(0,5):
            if x % 2 == 0:
                countEven += 1
                for j in crnew:
                    j = increaseEach(j,2,-2)
                sc = (crnew[y][0],crnew[y][1])
                ec = (crnew[y+4][0],crnew[y+4][1])
                pg.draw.line(screen,red,sc,ec,1)

            if x % 2 == 1:
                countOdd+= 1
                for j in crnew2:
                    j = increaseEach(j,2,-2)
                sc2 = (crnew2[y][0],crnew[y][1])
                ec2 = (crnew2[y+4][0],crnew[y+4][1])
                pg.draw.line(screen,red,sc2,ec2,1)

相关问题 更多 >