【发布时间】:2021-04-25 08:14:48
【问题描述】:
我有以下代码用于计算网络的页面排名。我试图通过在 for 循环中创建一个新列表来创建一个列表列表,但是每次使用 i 迭代时,列表都会超出范围。我相信索引错误是针对循环 i 但我不确定如何修改它以获取列表
N =6
nodes=[1, 2, 3, 4, 5, 6]
in_dict = {1: [3], 2: [1, 3], 3: [1], 4: [5, 6], 5: [3, 4], 6: [4, 5]}
k_out = [2, 0, 3, 2, 2, 1]
# initialising page rank of the vectors
pg_rnk0 = []
for i in nodes:
pg_rnk0.append(1/N)
pg_rnk1 = []
for i in nodes:
pg_rnk1.append(0)
#Finding the final probability vector
pgR = []
pgR.append(pg_rnk0)
pgR.append(pg_rnk1)
for i in range(0,N-1):
for j in range(0,len(pg_rnk0)):
if j+1 in in_dict:
for k in in_dict[j+1]:
if k_out[k-1] != 0:
pgR[i+1][j] = pgR[i+1][j] + pgR[i][k-1]/k_out[k-1]
elif k_out[k-1] == 0:
pgR[i+1][j] = pgR[i+1][j] + (1/N)
它给出了这个错误:
line 34, in <module>
pgR[i+1][j] = pgR[i+1][j] + pgR[i][k-1]/k_out[k-1]
IndexError: list index out of range
【问题讨论】:
标签: python arrays list dictionary for-loop