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高手风范的关键所在。

目录
相关文章
|
3月前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
64 6
|
11天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
11天前
|
API 开发工具 Python
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
|
2月前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
80 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
3月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
86 33
|
3月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
61 10
|
3月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
125 8
|
3月前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
76 11
|
3月前
|
测试技术 Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界中,装饰器是那些能够为我们的代码增添魔力的小精灵。它们不仅让代码看起来更加优雅,还能在不改变原有函数定义的情况下,增加额外的功能。本文将通过生动的例子和易于理解的语言,带你领略装饰器的奥秘,从基础概念到实际应用,一起开启Python装饰器的奇妙旅程。
60 11
|
3月前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!

热门文章

最新文章