13691255250 发表于 2020-7-26 11:50:37

我发现了一个匪夷所思的问题,为啥加循环后结果不一样?

求问为啥有如下差异,如何解决
运行第一个代码,能得到两张图,请关注第二张图,再运行第二个代码,会发现得到的图跟第一个代码的图不一样{: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)
         
      

13691255250 发表于 2020-7-26 12:34:51

有木有大神能指点一下

Twilight6 发表于 2020-7-26 13:07:12



第一个代码,最外层 for 循环需要循环2 次

第二个代码,最外层 for 循环只需要循环 1 次

每次最外层 for 循环一次,最内层都要循环 3 次

导致你两个循环edgelist.append((c,d)) 加入列表的数量不一致,所以产生的图片不同了

13691255250 发表于 2020-7-26 15:36:37

第一个代码,最外层 for 循环需要循环2 次
但每次循环, edgelist会被重置为空列表呀,加入到G的数据数量应该是一样多的呀

13691255250 发表于 2020-7-26 15:38:34

Twilight6 发表于 2020-7-26 13:07
第一个代码,最外层 for 循环需要循环2 次

第二个代码,最外层 for 循环只需要循环 1 次


第一个代码,最外层 for 循环需要循环2 次
但每次循环, edgelist会被重置为空列表呀,加入到G的数据数量应该是一样多的呀

BIO-张磊 发表于 2020-7-27 09:39:36

你把plt.savefig这句话改成plt.show()
你可以看看自己生成的图,多执行几遍,你看看图片是不是一样的。

13691255250 发表于 2020-7-30 18:29:52

我发觉是好像是 循环nx.draw_networkx(G, pos=None, arrows=True, with_labels=True) 的问题,有木有大神指点下
页: [1]
查看完整版本: 我发现了一个匪夷所思的问题,为啥加循环后结果不一样?