2017-02-08 1 views
1

作成するNetworkXを使用する方法:私はG1のノード1を削除するときは、二つの同一のグラフ例えば

g1 = nx.DiGraph()  
g1.add_edge(1,1,w = 1)  
g1.add_edge(1,2,w = 1)  

g1.add_edge(1,3,w = 2)  
g1.add_edge(2,2,w = 2) 

g2 = g  
print g2.predecessors(2) #[1, 2] 

g1.remove_node(1)  
print g2.predecessors(2) #[2] 

を、G2も影響されます。 g1と同じグラフg2を作成しますが、g1を変更するとg2は変更されません。 どうすればいいですか?ありがとう!!!

答えて

1

グラフ上Callメソッドcopy()は、あなたが言及していないので:

In [41]: 
g1 = nx.DiGraph()  
g1.add_edge(1,1,w = 1)  
g1.add_edge(1,2,w = 1)  
​ 
g1.add_edge(1,3,w = 2)  
g1.add_edge(2,2,w = 2) 
​ 
g2 = g1.copy()  
print('before g2', g2.predecessors(2)) #[1, 2] 
​ 
g1.remove_node(1)  
print ('after g2', g2.predecessors(2)) #[2] 
print ('g1 graph ', g1.predecessors(2)) #[2] 

before g2 [1, 2] 
after g2 [1, 2] 
g1 graph [2] 

あなたはg1は、ノードがそれを手に入れた

+0

を削除してきた一方でそのグラフg2が無修正で見ることができます!どうもありがとうございます!!! – Jie

+0

あなたの質問を解決した場合は、私の答えを受け入れることができます。答えの左上に空の目盛りが表示されます – EdChum

+0

既に完了しました。 – Jie