Python错误地分配值

时间:2018-03-30 11:52:56

标签: python python-2.7 list

我的python代码有问题。我尝试通过在循环中分配旧矩阵的值来创建一个新的矩阵(图的邻接矩阵表示)。

以下是代码:

for x in xrange(0,len(matrixD)):
    matrixD[x][0] = int(matrixD[x][0])
    matrixD[x][1] = int(matrixD[x][1])
    matrixD[x][2] = float(matrixD[x][2])
    print matrixD[x]
matrixFull = [[0]*332]*332

for x in matrixD:
    matrixFull[x[0]-1][x[1]-1] = x[2]
    matrixFull[x[1]-1][x[0]-1] = x[2]
    print x[0]
    print x[1]
    print x[0]-1
    print x[1]-1
    print x[2]
    print matrixFull[x[1]-1][x[0]-1]
    print matrixFull[x[0]-1][x[1]-1]    
    print matrixFull[0][0]
    print "\n\n"

错误发生在创建matrixFull的循环中。如您所见,matrixFull指定位置在矩阵D中跟随x。我在循环运行时打印所有结果。

但是有一个错误:

x[0]:2
x[1]:4
x[0]-1:1
x[1]-1:3
x[2]:0.0515
matrixfull[x[0]-1][x[1]-1]:0.0515
matrixfull[x[1]-1][x[0]-1]:0.0515
matrixfull[0][0]:0



x[0]:1
x[1]:4
x[0]-1:0
x[1]-1:3
x[2]:0.0767
matrixfull[x[0]-1][x[1]-1]:0.0767
matrixfull[x[1]-1][x[0]-1]:0.0767
matrixfull[0][0]:0.0767.

以下是matrixD的一些实例:

...
[11, 13, 0.0033]
[10, 11, 0.0011]
[9, 11, 0.0022]
[315, 316, 0.0013]
[315, 317, 0.0022]
...

正如您所看到的,在第二个循环中,代码没有将值放入[0] [0]位置,而是将其更改为0.0767。我在stackoverflow中读过一些帖子但找不到任何东西。

0 个答案:

没有答案