我一直在使用这段Python代码:
import networkx as nx
import random
import copy
iteracoes = 10
topologia = nx.gnp_random_graph(N,1.0)
def escolha_contatos(g):
contatos = []
n_contatos = g.number_of_edges()
while (n_contatos > 0):
contatos.append(random.choice(g.edges()))
g.remove_node(contatos[-1][0]) #remocao do nodo da rede
g.remove_node(contatos[-1][1]) #remocao do nodo da rede
n_contatos = g.number_of_edges() #novo numero de contatos
return contatos
for i in range(1,iteracoes):
aux_top = copy.copy(topologia)
contatos = escolha_contatos(aux_top)
其中topologia
是图表。当我调用函数escolha_contatos
时,此函数会更改拓扑的边数。这个结果对我来说并不有趣。有没有办法避免这个问题?
感谢您的帮助。
答案 0 :(得分:1)
使用copy.copy
仅生成浅拷贝,这意味着不会复制存储节点和边的数据结构。使用copy.deepcopy(topologia)
制作图表的深层副本。