Python NetworkX中用元组列表构建图返回None的问题求助
解决NetworkX构建图时
add_edges_from返回None的问题 NetworkX中的add_edges_from方法是原地修改图实例,不会返回新的图对象,因此它的返回值固定为None。你之前错误地将这个返回值赋值给变量,导致无法获取有效的图对象。
单个图的修正代码
直接对创建的图实例调用add_edges_from,之后操作原实例即可:
import networkx as nx e = [(1,2),(1,3),(2,3)] G = nx.Graph() G.add_edges_from(e) # 原地修改G,无需接收返回值 print(G.nodes) # 直接通过G访问图的属性
批量创建多个图的修正代码
需要先创建图实例,调用add_edges_from完成修改后,再将实例加入列表,而不是把方法的返回值加入:
e = [[(1,2),(1,3),(2,3)],[(10,20),(10,30),(20,30)]] graph_list = [] for edges in e: g = nx.Graph() # 先初始化图实例 g.add_edges_from(edges) # 给当前实例添加边 graph_list.append(g) # 将图实例存入列表 print(graph_list[0].nodes) # 现在可以正常访问图的节点属性
关键注意点
- NetworkX的图修改类方法(如
add_edges_from、add_node、remove_edge等)均为原地操作,返回None,不要尝试接收它们的返回值作为新图。 - 所有图的操作和属性访问,都基于你最初创建的
nx.Graph()(或其他类型图)实例。
内容的提问来源于stack exchange,提问作者Orca
相关产品推荐
相关产品推荐

