NetworkX中是否存在更简洁的简单图声明方式?
更紧凑的NetworkX简单图声明方法
嘿,这个问题问到点子上了!在NetworkX里,确实有不少比“先创建空图再逐个加边”更简洁紧凑的方式来声明指定的简单图,我给你分享几个常用的:
直接用边列表初始化
这是最常用的紧凑写法之一,把所有边组成的列表直接传给nx.Graph(),省去了先创建空图再调用add_edges_from()的步骤,一步到位:G = nx.Graph([(1, 2), (2, 3), (3, 1), (1, 4)])通过邻接字典初始化
如果你的图结构是按节点-邻居的形式组织的,直接传入邻接字典会更直观,能一眼看清每个节点的连接关系,适合手动定义小型图:G = nx.Graph({ 1: [2, 3, 4], 2: [1, 3], 3: [1, 2], 4: [1] })调用内置的标准图生成函数
要是你要创建的是常见的标准结构(比如完全图、路径图、环图),直接用NetworkX内置的生成函数是最紧凑的,完全不用手动写边:# 创建含5个节点的完全图 G = nx.complete_graph(5) # 创建含4个节点的路径图 G = nx.path_graph(4) # 创建含6个节点的环图 G = nx.cycle_graph(6)用生成器表达式动态生成边
对于有规律的边结构,用生成器表达式代替显式的边列表,代码会更简洁,还能节省内存:# 创建节点1到5的路径图(边为(1,2),(2,3),(3,4),(4,5)) G = nx.Graph((i, i+1) for i in range(1, 5))
这些方法都能帮你大幅简化图的声明代码,具体选哪种取决于你的图结构和数据源哦!
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

