Python 复制一个 python-igraph

Python duplicate a python-igraph

我有一个 python-igraph,需要复制它的两个副本,并在不更改另一个副本的情况下更改每个副本。现在我是这样做的:

copy1 = fullGraph
copy2 = fullGraph

但这似乎不是正确的做法,因为无论我在 copy1 中更改什么,copy2 都会发生同样的事情(比如删除一条边)。我想知道复制主图的最佳方法是什么。

谢谢

Assign 语句不复制 Python 中的对象。你可能想使用 copy.deepcopy() 函数。

有关 copy.shallow()copy.deepcopy() 的更多详细信息,请参阅 this 答案

另外 Graph 个对象继承了 copy method,这会产生浅拷贝。您可以像这样使用它:

copy1 = fullGraph.copy()
copy2 = fullGraph.copy()

A graph 对象有一个 copy 方法创建浅拷贝。 像这样使用它:

myGraphShallowCopied = myGraph.copy()

请注意,图形是重复的,但存储在图形中的对象不是。 这意味着,如果您更改图形,则只会更改副本(或原始图形)。如果更改图表中的对象,复制的图表和原始图表都会更改,因为它们引用相同的对象。

如果你想要一个真实的副本,你可以使用 copy.deepcopy() 比如:

from copy import deepcopy
myGraphDeepCopied = deepcopy(myGraph)

请注意,这可能(取决于图中存储的对象)比创建浅拷贝慢得多。

可以在 this answer.

中找到浅拷贝和深拷贝之间的区别的清晰解释