intersection_all#

intersection_all(graphs)[source]#

返回一个仅包含所有图中存在的节点和边的新图。

Parameters:
graphs可迭代对象

包含NetworkX图的可迭代对象

Returns:
R与列表中第一个图类型相同的新图
Raises:
ValueError

如果 graphs 是一个空列表。

NetworkXError

如果图中包含混合类型,如MultiGraph和Graph,或是有向图和无向图。

Notes

对于操作混合类型的图,应将它们转换为相同类型。

图、节点和边的属性不会复制到新图中。

如果需要,可以更新结果图的属性。例如,添加每个节点在所有图中的最小属性值的代码可以工作。 >>> g = nx.Graph() >>> g.add_node(0, capacity=4) >>> g.add_node(1, capacity=3) >>> g.add_edge(0, 1)

>>> h = g.copy()
>>> h.nodes[0]["capacity"] = 2
>>> gh = nx.intersection_all([g, h])
>>> new_node_attr = {
...     n: min(*(anyG.nodes[n].get("capacity", float("inf")) for anyG in [g, h]))
...     for n in gh
... }
>>> nx.set_node_attributes(gh, new_node_attr, "new_capacity")
>>> gh.nodes(data=True)
NodeDataView({0: {'new_capacity': 2}, 1: {'new_capacity': 3}})

Examples

>>> G1 = nx.Graph([(1, 2), (2, 3)])
>>> G2 = nx.Graph([(2, 3), (3, 4)])
>>> R = nx.intersection_all([G1, G2])
>>> list(R.nodes())
[2, 3]
>>> list(R.edges())
[(2, 3)]