我在networkx中有一个正边和负边的图。我想找到所有的负边并反转它们。我编写了下面的程序来查找和删除负边,但我得到一个迭代错误。这是代码:
for edge in G.edges():
sign = G.get_edge_data(edge[0], edge[1])['sign']
if sign == -1:
G.remove_edge(edge[0], edge[1])
G.add_edge(edge[1], edge[0])
如何迭代所有边并反转所有负边?
答案 0 :(得分:3)
在迭代时更改迭代的元素是邪恶的; o)
thingsToChange = []
for edge in G.edges():
sign = G.get_edge_data(edge[0], edge[1])['sign']
if sign == -1:
thingsToChange.append(edge)
之后更改它们很好:
for things in thingsToChange:
G.remove_edge(edge[0], edge[1])
G.add_edge(edge[1], edge[0])