MultiGraph.add_edges_from#
- MultiGraph.add_edges_from(ebunch_to_add, **attr)[source]#
添加 ebunch_to_add 中的所有边。
- 参数:
- ebunch_to_add边的容器
容器中给定的每条边都将添加到图中。边可以是
2 元组 (u, v) 或
3 元组 (u, v, d),用于边数据字典 d,或
3 元组 (u, v, k),用于不可迭代的键 k,或
4 元组 (u, v, k, d),用于带有数据和键 k 的边
- attr关键字参数,可选
可以使用关键字参数分配边数据(或标签或对象)。
- 返回:
- 一个列表,包含分配给
ebunch
中每条边的键。
- 一个列表,包含分配给
另请参阅
add_edge
添加一条边
add_weighted_edges_from
一种方便添加带权重边的方式
注意
两次添加同一条边没有效果,但是当每次添加重复边时,任何边数据都将被更新。
在 ebunch 中指定的边属性优先于通过关键字参数指定的属性。
默认键使用
new_edge_key()
方法生成。通过继承基类并提供自定义的new_edge_key()
方法可以覆盖此方法。当从正在修改的图上的迭代器添加边时,可能会引发
RuntimeError
异常,并带有消息:RuntimeError: dictionary changed size during iteration
。这发生在迭代过程中图的底层字典被修改时。为了避免此错误,请将迭代器评估到一个单独的对象中,例如使用list(iterator_of_edges)
,然后将此对象传递给G.add_edges_from
。示例
>>> G = nx.Graph() # or DiGraph, MultiGraph, MultiDiGraph, etc >>> G.add_edges_from([(0, 1), (1, 2)]) # using a list of edge tuples >>> e = zip(range(0, 3), range(1, 4)) >>> G.add_edges_from(e) # Add the path graph 0-1-2-3
将数据关联到边
>>> G.add_edges_from([(1, 2), (2, 3)], weight=3) >>> G.add_edges_from([(3, 4), (1, 4)], label="WN2898")
如果要使用迭代器修改同一个图,请对图上的迭代器进行评估
>>> G = nx.MultiGraph([(1, 2), (2, 3), (3, 4)]) >>> # Grow graph by one new node, adding edges to all existing nodes. >>> # wrong way - will raise RuntimeError >>> # G.add_edges_from(((5, n) for n in G.nodes)) >>> # right way - note that there will be no self-edge for node 5 >>> assigned_keys = G.add_edges_from(list((5, n) for n in G.nodes))