我收到了这段代码的错误: path [index] [4] + = 1 IndexError:列表索引超出范围 为什么会这样?我怎么能删除这个错误? 代码:
def stress_centrality(g):
stress = defaultdict(int)
for a in nx.nodes_iter(g):
for b in nx.nodes_iter(g):
if a==b:
continue
pred = nx.predecessor(G,b) # for unweighted graphs
#pred, distance = nx.dijkstra_predecessor_and_distance(g,b) # for weighted graphs
if a not in pred:
return []
path = [[a,0]]
path_length = 1
index = 0
while index >= 0:
n,i = path[index]
if n == b:
for vertex in list(map(lambda x:x[0], path[:index+1]))[1:-1]:
stress[vertex] += 1
if len(pred[n]) >i:
index += 1
if index == path_length:
path.append([pred[n][i],0])
path_length += 1
else:
path[index] = [pred[n][i],0]
else:
index -= 1
if index >= 0:
path[index][4] += 1
return stress
答案 0 :(得分:0)
如果没有数据,除了指示性答案之外,很难给出任何其他信息。
这一行
path[index][4] += 1
假设path[index]
中有5个元素,但少于此。在我看来,您的代码仅分配或附加到长度为2的path
列表中。如
path = [[a,0]]
path.append([pred[n][i],0])
path[index] = [pred[n][i],0]
因此很难看出如何访问其中一个列表的第5个元素是正确的。
这是一个完整的猜测,但我认为你可能意味着
path[index][1] += 4