Cara mengulangi dan menghapus tepi tertentu dalam grafik berarah jaringanx

Saya memiliki grafik dengan sisi positif dan negatif di jaringanx. Saya ingin menemukan semua sisi negatifnya dan membalikkannya. Saya menulis program di bawah ini untuk menemukan dan menghapus sisi negatif tetapi saya mendapatkan kesalahan iterasi. Ini kodenya:

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])

Bagaimana saya bisa mengulangi semua sisi dan membalikkan semua sisi negatif?


person Lee Yaan    schedule 04.01.2018    source sumber


Jawaban (1)


Mengubah elemen iterasi sementara iterasi itu jahat ;o)

thingsToChange = []
for edge in G.edges():
    sign = G.get_edge_data(edge[0], edge[1])['sign']
    if sign == -1:
       thingsToChange.append(edge)

Mengubahnya setelah itu tidak masalah:

for things in thingsToChange:
    G.remove_edge(edge[0], edge[1])
    G.add_edge(edge[1], edge[0])
person Patrick Artner    schedule 04.01.2018