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

简介: 【7月更文挑战第10天】在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高手风范的关键所在。

目录
相关文章
|
6天前
|
数据库连接 开发者 Python
Python进阶宝典:十个实用技巧提升代码效率
Python进阶宝典:十个实用技巧提升代码效率
13 0
|
7天前
|
数据可视化 Python
用Python给代码安个进度条,太香了吧
用Python给代码安个进度条,太香了吧
28 4
用Python给代码安个进度条,太香了吧
|
6天前
|
数据采集 数据格式 Python
享一些可以提高数据采集准确性的 Python 代码
这段Python代码示例提供了几个实用功能以提升数据采集的准确性:数据源验证、去除重复值、数据范围检查和数据格式验证。通过这些工具,可以确保所采集的数据在合理范围内且格式正确,有效提高了数据的质量。示例展示了如何使用这些功能进行数据清理与验证。
|
9天前
|
Python
Python — 四款表白代码送给喜欢的那个她(他)
【8月更文挑战第10天】仅以此篇文章(4个表白代码,每一个都有不一样的惊喜,代码附上了详细注释,方便大家根据注释修改),祝愿轻舟所有的读者得遇良人;七夕快乐~
68 8
Python — 四款表白代码送给喜欢的那个她(他)
|
7天前
|
JavaScript 前端开发 ice
简单实用,Python代码调试利器~
简单实用,Python代码调试利器~
23 4
简单实用,Python代码调试利器~
|
10天前
|
算法 搜索推荐 数据挖掘
【2024年华数杯全国大学生数学建模竞赛】C题:老外游中国 问题思路分析及Python代码实现
本文提供了2024年华数杯全国大学生数学建模竞赛C题“老外游中国”的解题思路分析和Python代码实现,涉及景点评分统计、城市综合评价、游玩路线规划以及特定条件下的旅游优化问题。
51 6
【2024年华数杯全国大学生数学建模竞赛】C题:老外游中国 问题思路分析及Python代码实现
|
1天前
|
开发工具 git Python
通过Python脚本git pull 自动重试拉取代码
通过Python脚本git pull 自动重试拉取代码
81 4
|
3天前
|
对象存储 Python
Python代码解读-理解-定义一个User类的基本写法
以上描述清晰地阐述了如何在Python中定义 `User`类的基本方法以及如何创建和使用该类的实例。这是面向对象编程中的核心概念,是紧密结合抽象和实现,封装数据并提供操作数据的接口。由于用简单通用的语言易于理解,这样的解释对于初学者而言应该是友好且有帮助的。
13 4
|
1天前
|
Shell Python 容器
Python模块是其代码组织和重用的基本方式。
【8月更文挑战第18天】Python模块是其代码组织和重用的基本方式。
6 1
|
5天前
|
Python
安装notepad++ 安装Python Python环境变量的数值。怎样在notepad++上运行Python的代码
这篇文章提供了在notepad++上安装和配置Python环境的详细步骤,包括安装Python、配置环境变量、在notepad++中设置Python语言和快捷编译方式,以及解决可能遇到的一些问题。
安装notepad++ 安装Python Python环境变量的数值。怎样在notepad++上运行Python的代码