Python高手必备!揭秘图(Graph)的N种风骚表示法,让你的代码瞬间高大上

简介: 在Python中,图作为重要的数据结构,广泛应用于社交网络分析、路径查找等领域。本文介绍四种图的表示方法:邻接矩阵、邻接表、边列表和邻接集。每种方法都有其特点和适用场景,掌握它们能提升代码效率和可读性,让你在项目中脱颖而出。

在Python的广阔天地中,图(Graph)作为一种重要的数据结构,广泛应用于社交网络分析、路径查找、推荐系统等多个领域。掌握图的不同表示方法,不仅能够提升代码的效率与可读性,还能让你的解决方案在众多项目中脱颖而出,尽显高手风范。今天,我们就来揭秘图的N种风骚表示法,让你的代码瞬间高大上。

  1. 邻接矩阵(Adjacency Matrix)
    邻接矩阵是最直观的图的表示方法之一,它使用一个二维数组(或列表的列表)来存储图中节点之间的连接信息。如果节点i与节点j之间有边相连,则矩阵中对应位置的值(通常为1)表示存在连接;否则为0(或无穷大,表示无直接连接)。

python

示例:无向图的邻接矩阵表示

graph = [
[0, 1, 0, 0, 1],
[1, 0, 1, 1, 1],
[0, 1, 0, 1, 0],
[0, 1, 1, 0, 1],
[1, 1, 0, 1, 0]
]

访问节点1和节点3是否相连

print(graph[1][3]) # 输出: 1,表示相连

  1. 邻接表(Adjacency List)
    邻接表是另一种常用的图的表示方法,它通过列表(或字典)的列表(或字典)来存储每个节点的邻居节点。这种方式相较于邻接矩阵,在稀疏图中能大大节省空间。

python

示例:无向图的邻接表表示

graph = {
'A': ['B', 'E'],
'B': ['A', 'C', 'D', 'E'],
'C': ['B', 'D'],
'D': ['B', 'C', 'E'],
'E': ['A', 'B', 'D']
}

访问节点B的所有邻居

print(graph['B']) # 输出: ['A', 'C', 'D', 'E']

  1. 边列表(Edge List)
    边列表是一种简单的表示法,它直接列出图中所有的边。这种表示法对于需要遍历图中所有边的场景非常有用。

python

示例:无向图的边列表表示

edges = [('A', 'B'), ('B', 'C'), ('B', 'D'), ('B', 'E'), ('A', 'E'), ('C', 'D'), ('D', 'E')]

遍历所有边

for edge in edges:
print(edge)

  1. 邻接集(Adjacency Set)
    邻接集是邻接表的一种变体,它将每个节点的邻居存储在集合中,以确保邻居节点的唯一性。这在处理无向图时尤其有用,因为可以避免重复的邻居节点。

python

示例:无向图的邻接集表示

graph = {
'A': {'B', 'E'},
'B': {'A', 'C', 'D', 'E'},
'C': {'B', 'D'},
'D': {'B', 'C', 'E'},
'E': {'A', 'B', 'D'}
}

访问节点B的所有唯一邻居

print(graph['B']) # 输出: {'A', 'C', 'D', 'E'}
结语
掌握了上述图的表示方法,你便能在面对不同图算法问题时,灵活选择最适合的表示方式,从而编写出既高效又优雅的Python代码。无论是处理大规模社交网络数据,还是优化路径搜索算法,这些表示法都将是你手中的利器,让你的代码瞬间高大上。记住,选择恰当的表示法是解决问题的第一步,也是展现你Python高手风范的关键所在。

目录
相关文章
|
2月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
183 26
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
319 1
|
2月前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
168 1
|
1月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
234 100
|
1月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
357 95
|
2月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
232 104
|
2月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
428 99
|
1月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
153 88
|
2月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
263 102
|
1月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。

推荐镜像

更多