วิธีวนซ้ำและลบขอบเฉพาะในกราฟที่กำกับโดย Networkx

ฉันมีกราฟที่มีขอบบวกและลบในเครือข่าย x ฉันต้องการค้นหาขอบลบทั้งหมดแล้วกลับด้าน ฉันเขียนโปรแกรมด้านล่างเพื่อค้นหาและลบขอบด้านลบ แต่ได้รับข้อผิดพลาดในการวนซ้ำ นี่คือรหัส:

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

ฉันจะวนซ้ำผ่านขอบทั้งหมดและกลับด้านลบทั้งหมดได้อย่างไร


person Lee Yaan    schedule 04.01.2018    source แหล่งที่มา


คำตอบ (1)


การเปลี่ยนองค์ประกอบของการวนซ้ำ ในขณะที่ การวนซ้ำนั้นชั่วร้าย ;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])
person Patrick Artner    schedule 04.01.2018