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.
中找到浅拷贝和深拷贝之间的区别的清晰解释
我有一个 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.
中找到浅拷贝和深拷贝之间的区别的清晰解释