我的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中读过一些帖子但找不到任何东西。