-1
我面對這個奇怪的錯誤,並在其上浪費了1小時,但不能想出解釋錯誤而計算math.sqrt
import math
ipd={1:[2,3],2:[1],3:[1],4:[5,6,7],5:[4,6],6:[4,5],7:[4]}
gkeys = [k for k in ipd.iterkeys()]
key_map = {}
for x in range(len(gkeys)):
key_map[x] = gkeys[x]
val = len(gkeys)
#adj matrix...
W = [[0.0]*val]*val
print W
for i in range(len(gkeys)):
for j in range(len(gkeys)):
#if i and j has edge...
if key_map[j] in ipd[key_map[i]]:
deg1 = len(ipd[key_map[j]])
deg2 = len(ipd[key_map[i]])
v = 1.0/math.sqrt(deg1*deg2)
W[i][j] = v
print i,j,deg1,deg2,W[i][j], W[j][i]
這裏是整個問題
對於i = 3和j = 5第一個W [i] [j]是0.4248 .. 但是對於i = 5,j = 3 W [j] [i]給出0.5,這是如何實現的。
謝謝!
您遇到的問題與如何創建'W'做。它的項目都是對同一個列表的引用,而不是幾個獨立的列表。 – Blckknght