我发现了一个匪夷所思的问题,为啥加循环后结果不一样?
求问为啥有如下差异,如何解决运行第一个代码,能得到两张图,请关注第二张图,再运行第二个代码,会发现得到的图跟第一个代码的图不一样{:5_94:}
import networkx as nx
import matplotlib.pyplot as plt
dictionary={ 3: [['O', 'H2'], ['H', 'OH']],36: [['H', 'O2'], ['HO2']], 38: [['H', 'O2'], ['O', 'OH']],45: [['H', 'HO2'], ['O2', 'H2']]}
list=[,]
for a in range(len(list)):
edgelist=[]
for b in list:
fanyingwu=dictionary
shengchengwu=dictionary
for c in fanyingwu:
for d in shengchengwu:
edgelist.append((c,d))
G=nx.DiGraph()
G.add_edges_from(edgelist)
nx.draw_networkx(G, pos=None, arrows=True, with_labels=True)
plt.savefig('D:\\%s.png'%a)
第二个代码,仅是把list中的第一项删去了
import networkx as nx
import matplotlib.pyplot as plt
dictionary={ 3: [['O', 'H2'], ['H', 'OH']],36: [['H', 'O2'], ['HO2']], 38: [['H', 'O2'], ['O', 'OH']],45: [['H', 'HO2'], ['O2', 'H2']]}
list=[]
for a in range(len(list)):
edgelist=[]
for b in list:
fanyingwu=dictionary
shengchengwu=dictionary
for c in fanyingwu:
for d in shengchengwu:
edgelist.append((c,d))
G=nx.DiGraph()
G.add_edges_from(edgelist)
nx.draw_networkx(G, pos=None, arrows=True, with_labels=True)
plt.savefig('D:\\%s.png'%a)
有木有大神能指点一下
第一个代码,最外层 for 循环需要循环2 次
第二个代码,最外层 for 循环只需要循环 1 次
每次最外层 for 循环一次,最内层都要循环 3 次
导致你两个循环edgelist.append((c,d)) 加入列表的数量不一致,所以产生的图片不同了
第一个代码,最外层 for 循环需要循环2 次
但每次循环, edgelist会被重置为空列表呀,加入到G的数据数量应该是一样多的呀 Twilight6 发表于 2020-7-26 13:07
第一个代码,最外层 for 循环需要循环2 次
第二个代码,最外层 for 循环只需要循环 1 次
第一个代码,最外层 for 循环需要循环2 次
但每次循环, edgelist会被重置为空列表呀,加入到G的数据数量应该是一样多的呀 你把plt.savefig这句话改成plt.show()
你可以看看自己生成的图,多执行几遍,你看看图片是不是一样的。 我发觉是好像是 循环nx.draw_networkx(G, pos=None, arrows=True, with_labels=True) 的问题,有木有大神指点下
页:
[1]