我将其发布在这里既作为答案(遵循)又作为问题。
我正在复制一个图形,然后修剪某些边缘,增加路径搜索,然后修剪并重复(在递归、深度优先路径搜索中)。
问题:
我稍微理解浅复制和深复制之间的区别,但是有人能告诉我这两种复制图时的后果吗?
出现我的问题是因为使用 networkx copy
功能时:
G2 = G.copy()
我相信这会创建一个深度复制,我进入了一个递归复制循环,最终失败了(下面的屏幕截图)。我发现使用浅拷贝:
G2 = nx.MultiDiGraph(G)
没有出现这样的问题。但是我想知道我是否可能需要使用其中一种而不是另一种,或者通常情况下一种更可取?
深拷贝问题:
最佳答案
我最终发现,并且我没有在其他地方看到任何类似的内容,因此我将其发布在这里以供其他人将来引用,问题的根源是我的节点名称是 beautifulSoup NavigableStrings 和不是字符串。
我的节点名称是由一个函数生成的,该函数解析一些 html,并按照以下方式创建:
(soup.find(class_='from').abbr.string, soup.find(class_='tp').abbr.string)
只需将 NavigableStrings 转换为字符串即可解决问题:
(str(soup.find(class_='from').abbr.string), str(soup.find(class_='tp').abbr.string))
关于Python networkx图复制进入递归循环并失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37432808/