太过瘾了,最全的Python数据结构总结,太干货了!

数据结构与算法(python)(数据结构) 整理了数据结构的基础内容,包括列表、栈和队列、链表、哈希表和树的相关知识点 阅读详情
AI摘要

本文整理了Python里数据结构的各种技巧。介绍了Dict型、数组型、自定义类、集合、堆栈等数据结构,如普通字典、顺序字典、可变动态数组、基本类封装、set集合、双向队列等,还提及不同数据结构的特点和适用场景,强调好的程序员应考虑数据结构以提高效率。

点击上方蓝色“菜鸟学Python”,选择“设为星标”

带你一起学Python!

周围越来越多的人开始学习Python,Python确实入门容易,但是精通很难。因为Python 非常灵活,对于同一件事情Python有很多种解法,技巧性非常强。

今天小编整理了一篇收罗Python里面关于数据结构的各种奇淫技巧大全,就连玩Python的老鸟都值得一读,我们一起来看一下!

1.Dict型数据结构

字典(Dict),映射(Map)和哈希表(Hash Table)是Python里面的核心数据结构,类似的这样的数据结构几乎在所有的主流的编程语言比如Java ,C++里面也有它的身影,都是非常重要的知识点。

1).普通字典

2).顺序字典

上面的只是字典的最最最基本的用法,真正在生成环境的时候,我们很多时候需要保持需要插入的顺序,这个时候就要用到OrderedDict。

3).缺省字典

如果你在存储数据的时候,希望有默认的值在里面,那么你就应该用defaultdict,它在很多场景下面非常巧妙的用处,可以节省很多代码。

4).链式映射

当我们遇到复杂的数据结构的时候,比如需要把多个字典进行合并成一个单一的字典,进行查找搜寻就需要用ChainMap。

2.数组型数据结构

array数组几乎所有的语言都有,记得大学的时候学C语言,数组是最开始接触的数据结构,数组都有一个下标,然后都是连续分配内存的。

因为数组将信息存储在相邻的内存块中,所以被认为是连续的数据结构,很多静态语言里面,都是要强制初始化数组的类型以及长度,如果数组越界会出现寻址到乱的数据,那么Python的数组是怎么表示的呢?

1).list可变动态数组

2). 不可变数组

跟list一样,但是tuple对象是不可变的,不能修改,删除

3).类似C语言的array

Python里面有一个 array模块,可以创建跟C语言很类似的数组,array.array用法跟list很像,唯一的区别在于它只能存储同样地数据类型的数据。它所占的存储空间的大小就是数据的大小。

4).字符数组

Python 3.x使用str对象将文本数据存储为Unicode字符的不可变序列。这意味着 str型字符串数组是不可变的字符数组。

3.自定的类数据结构

当你的数据结构更复杂的时候,你就会构造类来封装你的数据结构,Python中用类来封装有很多方法,我们下面一一给大家讲解。

1).基本的类封装

Car这个汽车类来封装汽车的数据,比如颜色,行驶的公里数,是否自动挡,然后我们就可以对这个Car类进行初始化它的对象car1,car2,通过__init__函数来初始化对象。

2).数据类

数据类是在Python 3.7才开始有的。是一个新的模块转为数据存储的类,使用起来非常方便,可以让你的对象实例将立即获得一些有用的功能,从而节省了一些键入和手动实现的工作:

  • 定义实例变量的语法较短,无需实现该.__init__()方法。

  • 数据类的实例通过自动生成的.__repr__()方法自动获得漂亮的字符串表示形式。

  • 实例变量接受类型注释,从而使数据类在一定程度上能够自我记录。

3).命名元组

nametuple是Python 里面短小精悍的类,它是collection模块里面的一个库函数,对于封装短小的类非常有用。让我们可以像访问属性一样去访问类的内容。使用的效率更高更接近底层的数组的效率,而且代码易读。

4).序列化的C结构

看到struct这么英文单词,大家应该并不陌生,因为c/c++中就有struct,在那里struct叫做结构体。在Python中也使用struct,Python正是使用struct模块执行Python值和C结构体之间的转换,从而形成Python字节对象。

4.集合

Python也有实现可变且不可变的集合和多集合数据结构。

1).set集合

用来处理去掉重复元素非常有效,多个集合可以进行运算处理,比如取两个集合的交集,联合等等。

2).frozenset不可变集合

frozenset类实现的不可变set.frozenset对象是静态的,并且仅允许对其元素进行查询操作,而不能进行插入或删除操作。

3).多集

Python标准库中的collection里面的Counter类实现了一种多集或袋类型,这个类型允许集合中的元素出现多次,是不是很神奇,一起来看一下。

5.堆栈

栈是一个非常重要的数据结构,支持快速后进/先出(LIFO)语义插入和删除。与列表或数组不同,堆栈通常不允许随机访问它们包含的对象。插入和删除操作通常也称为push和pop,Python的栈使用起来要比C,C++简单很多。

2).双向队列

Python的deque对象以双向链接列表的形式实现,它的操作很像list 同时 ,相比于list实现的队列,deque实现拥有更低的时间和空间复杂度。list实现在出队(pop)和插入(insert)时的空间复杂度大约为O(n),deque在出队(pop)和入队(append)时的时间复杂度是O(1)。

双向队列其实有很多种妙用,尤其是在访问队列里面的头尾的数据效率非常高,而且还支持很多队列的黑科技,比如逆时针旋转。

3).并发里面的队列

当我们处理大量的数据请求的时候,比如我们需要爬大量的网站的网址,有的时候我们会将待处理的请求扔到队列queue里面,用多进程或者多线程进行并发处理。比如典型的生产者消费者的模式中就经常用到queue.

限于篇幅,还有一小部分的数据结构没有展开,基本上Python主要的数据结构都在上面了。

罗列的很多数据结构,老司机都没有怎么用到。其实好的程序员在做项目的时候都会考虑到数据结构,用那种数据结构更节省内存,更加提高效率。

这是一门硬功夫,需要不断的在实战项目中推敲思考,好了希望本篇总结对大家有帮助。

有热门推荐????1. 超全Python IDE武器库大总结,优缺点一目了然!
2. Python 30道高频面试题及详细解答
3. 精华技巧,学会这几招可以假装是Python高手
4. 哇!用Python读取CVS文件竟然有5招,据说90%的人只会2招

菜鸟编程大本营,现已正式上线!接下来我们将会在该公众号上,为大家分享优质编程语言里趣味的干货,通俗易懂的实战案例,经验分享,让菜鸟也爱上编程。点这里,领取新手福利
Python常见数据结构整理 Python中常见的数据结构可以统称为容器(container)。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。 阅读详情

相关推荐

Python教程:一文了解10种数据结构在Python中的实现方法

数据结构是计算机科学中非常重要的概念,它用于组织和存储数据,使得数据可以高效地被访问和操作。在编程中,选择合适的数据结构对于解决问题和提高程序性能至关重要。

旦莫的博客 3348

python 数据结构篇

python中的数据结构实现:数组、链表(单链表、双向链表、双向循环链表)、队列(FIFO、LIFO/栈、优先级队列、双端队列)、树(二叉树、堆、树、森林)、图

qq_62047219的博客 2万+

嵌入式开发实战:如何用cJSON库在STM32上实现轻量级JSON通信(附完整代码)

本文详细介绍了如何在STM32嵌入式系统中使用cJSON库实现高效的JSON通信方案。针对嵌入式环境的内存限制,提供了内存优化策略、cJSON库的深度定制方法以及完整的通信流程实现代码,帮助开发者解决JSON解析效率低下和跨平台兼容性等核心挑战。

star5的专栏 471

Python常用数据结构

Python常用数据结构

zy0412326的专栏 4493

脑电分析:为什么大脑信号会“变同步”?——事件相关同步化与去同步化 (ERS/ERD) 全景解析

脑电分析中的事件相关同步化(ERS)和去同步化(ERD)是研究大脑动态节律的重要方法,反映特定任务下脑电频段能量的变化。ERD表示神经元活动分散(功率下降),提示脑区活跃处理信息;ERS则反映神经元同步(功率增强),常与静息状态相关。本文详解了ERS/ERD的生理机制、计算流程(包括基线校正和功率谱分析),并提供了Python实现示例,展示如何通过Welch法和STFT进行时频分析,生成ERD/ERS热力图。该技术广泛应用于运动想象脑机接口、癫痫检测等领域,为理解大脑功能状态提供了量化工具。

qq_32516809的博客 1396

glibc手动升级高版本导致系统(RedHat/Centos)异常(无法开机等)的解决方法(回退低版本glibc)

我的系统是Redhat7.6, 理论上Redhat7/Centos7都可以使用该方法解决问题。 首先慎重提醒各位:glibc升级会产生无法预料的后果!由于Android NDK需要高版本的glibc才可以使用,所以作死手动去更新了glibc2.18,使得重启系统后图形界面消失。(Redhat/Centos升级此类安装包最好用yum升级,因为系统内的程序对他们的依赖很大,升级会导致大部分程序无法使用...

weixin_42881528的博客 9695

python 常用的8种经典数据结构

python原生数据结构:元组Tuple(),列表List[],集合Set{},字典Dictionary{A:B}; NumPy包中的数据结构:数组Ndarray(带多种操作),矩阵Matrix(多种线性代数计算); Pandas包中的数据结构:序列Series(索引+1列数据),数据框DataFrame(索引+多列数据表)。......

weixin_45044554的博客 2万+

别再死磕Excel了!用Vensim PLE免费版,30分钟搞定你的第一个系统动力学模型

本文介绍如何使用Vensim PLE免费版在30分钟内构建第一个系统动力学模型,无需编程或数学基础。通过个人储蓄增长案例,详细讲解因果回路图绘制、存量流量图创建及方程编写,帮助读者掌握动态系统建模与仿真技巧,适用于理财、项目管理等多种场景。

weixin_29045001的博客 329

Python算法中常用的数据结构

数据结构可以帮助我们用于存储和操作复杂的数据。在Python中,数据结构有以下五类: ✨列表(list):可变的、有序元素序列。 ✨元组(tuple):不可变的、有序元素序列。 ✨集合(set):元素互斥的、可变的、无序元素序列。 ✨字典(dictionary):无序的、键值对序列。 ✨数据帧(DataFrame):存储二维数据的二维结构。

m0_73375411的博客 4340

运用AD进行stm32最小系统PCB图的绘制

运用AD进行stm32最小系统PCB图的绘制一、PCB图的绘制(1)布局(2)布线(3)覆铜(4)电气规则检查二、给PCB添加logo三、生成garber文件总结 一、PCB图的绘制 (1)布局 1.画好原理图后,新建一个PCB项目 2.在Design中选择第二项,导入器件 3.先点击右下角第一项,再点第二项导入器件 导入成功 4.导入后效果 选择紫红色方框,按电脑上的delete键把它删掉 5.在Tools选择Outside Board,自动排布器件 排布后效果如图 6.画线,确定板子范围

lucario1的博客 2149

第 5 篇:责任链模式 (Chain of Responsibility) —— 协议栈的流水线

本文介绍了责任链模式在嵌入式通信协议解析中的应用。针对传统"面条式"代码维护困难的问题,提出将各协议解析器解耦为独立处理单元,通过链表形式串联。文章详细展示了模式实现:定义抽象处理者接口、实现具体协议处理器、构建链表管理器。该方案具有内存占用低(O(1)栈空间)、可动态扩展、支持优先级调整等优势,并探讨了性能优化策略及动态插件系统等扩展应用,为嵌入式通信协议处理提供了清晰的架构方案。

一路往蓝-Anbo 的博客 177

python存储数据结构_太过瘾了,最全的Python数据结构总结,太干货了!

原标题:太过瘾了,最全的Python数据结构总结,太干货了!点击上方蓝色“菜鸟学Python”,选择“设为星标”带你一起学Python! 周围越来越多的人开始学习Python,Python确实入门容易,但是精通很难。因为Python 非常灵活,对于同一件事情Python有很多种解法,技巧性非常强。今天小编整理了一篇收罗Python 里面关于数据结构的各种奇淫技巧大全,就连玩Python的老鸟都值得...

weixin_33577842的博客 933

Isaac Sim/Lab & ROS2 入门教程 —— 宇树人形机器人 H1 强化学习策略部署

本文介绍了如何通过ROS2和IsaacSim运行H1人形机器人的强化学习运动策略。主要内容包括:1)设置机器人关节配置和初始位置;2)添加IMU传感器;3)配置ROS2节点以发布观测数据和接收动作指令;4)创建模拟环境并发布ROS时钟;5)最终运行ROS2策略实现对机器人的键盘控制。文中详细说明了关节参数设置、传感器配置、ROS2节点创建等关键步骤,并提供了注意事项和验证方法。完成配置后,用户可通过键盘指令控制机器人在平坦地形上的运动。

2506_90492529的博客 2170

先学python还是数据结构_太过瘾了,最全的Python数据结构总结,太干货了!

转自:菜鸟学Python周围越来越多的人开始学习Python,Python确实入门容易,但是精通很难。因为Python 非常灵活,对于同一件事情Python有很多种解法,技巧性非常强。今天小编整理了一篇收罗Python里面关于数据结构的各种奇淫技巧大全,就连玩Python的老鸟都值得一读,我们一起来看一下!1.Dict型数据结构字典(Dict),映射(Map)和哈希表(Hash Table)是Py...

weixin_39695490的博客 438

10、硬件工程师笔试面试——继电器(2025版本)

在设计电路时,应综合考虑SSR的优势和局限性,确保选择合适的型号,并采取适当的设计措施来优化性能和可靠性。继电器的主要功能是利用较小的电流或电压来控制较大电流或电压的电路,实现信号的放大和隔离。在处理继电器故障时,应综合考虑电源、线圈、触点和负载等因素,及时进行故障诊断和处理,以确保电路系统的稳定性和安全性。由于汽车电子系统的复杂性,继电器的设计和选择必须考虑到系统的特定要求,包括电流容量、电压等级、环境条件(如温度、湿度、振动)以及所需的保护和隔离功能。确定线圈的工作电压或电流,以及吸合电压或电流。

XU157303764的博客 3733

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

c++ 结构体 删除_太过瘾了,最全的Python数据结构总结,太干货了!

点击上方蓝色“菜鸟学Python”,选择“设为星标”带你一起学Python!周围越来越多的人开始学习Python,Python确实入门容易,但是精通很难。因为Python 非常灵活,对于同一件事情Python有很多种解法,技巧性非常强。今天小编整理了一篇收罗Python里面关于数据结构的各种奇淫技巧大全,就连玩Python的老鸟都值得一读,我们一起来看一下!1.Dict型数据结构字典(D...

weixin_35783593的博客 461

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

RAG与Agent实战:这套免费Notebooks带你从原理到项目一次打通

大模型应用开发中,RAG(检索增强生成)与Agent(智能体)已成为两大核心技术范式。RAG通过文档切块、向量检索与生成增强,让模型基于外部知识作答;而Agent则借助ReAct循环与工具调用,赋予模型自主决策和执行任务的能力。理解这些概念的原理与工程实践,是构建可靠AI应用的关键。然而,从理论到落地往往面临环境搭建复杂、代码缺失、调优无据等痛点。一套免费开源的交互式Notebook实战资源,将RAG与Agent拆解为可亲手运行的实验:从文档切块、embedding、向量检索、rerank重排,到手写ReA

weixin_34099526的博客 943

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python数据结构与算法-数据结构(列表、栈、队列、链表)

python的数据结构与算法

little_limin的博客 4333

python的数据结构有哪些

Python 的数据结构有以下几种: 列表 (list): 列表是一个有序的集合, 可以随时添加和删除元素。 元组 (tuple): 元组是一个不可变的有序列表, 一旦初始化就不能修改。 字典 (dictionary): 字典是一个无序的键值对集合, 其中的键是唯一的, 值可以是任意类型。 集合 (set): 集合是一个无序的不重复元素序列。 字符串 (string): 字符串是一个有序...

weixin_35755434的博客 2021

Python数据结构

元组和列表类似,都是有序的线性结构,用括号来表示,可以指定索引来获取元素。创建元组其实很简单,只要在某个值后面加上一个逗号。注意,当元组只包含一个元素的时候,不能写成(elem)这样的形式,而是要写成"elem,"或者(elem,)如果元组为空,可以只写()。集合是一组无序排列的值,其内容无序且元素不重复。它支持用in和not in操作符检查成员,用len内建函数得到集合的元素个数,用for循环遍历集合的成员,但因为集合本身是无序的,所以不可以为集合创建索引或执行切片操作。

qq_41783539的博客 2635

python教程(二):python数据结构大全(附代码)

Python 中数据结构的重要性不言而喻,它们是构建高效、可维护代码的基础。数据结构决定了如何存储、组织和操作数据。理解和使用合适的数据结构能够极大地提升程序的性能、简洁性以及代码的可读性。Python 的基础数据结构有 4 种,分别是 列表 (list)、元组 (tuple)、集合 (set) 和 字典 (dictionary),它们都是 Python 内置的,并不需要额外导入模块。基础数据结构广泛用于存储和操作数据,支持常见的增删改查等操作。

a8598671的博客 3751

「Python系列」Python数据结构

方法| 描述| |-------|-------| list.append(x)| 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x)。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。元组中的元素之间用逗号分隔。

m0_59236602的博客 1876

Python语言的数据结构

🎂在我们的Python语言当中所谓的数据结构其实就是一些存储数据的类型。就比如说我们C语言当中的数组和结构体一样。我们Python语言当中的数据类型包括列表,元组,字典,集合,字符串五种形式。我们使用这四种不同的数据类型可以对数据进行不同的处理操作。接下来我们就依次来认识一下Python语言中的数据类型。

lmbuhuiku的博客 2370

Python数据结构详解(一)

学习一门语言,了解其数据结构是基础。本篇详细介绍Number类型

程序员树先生的博客 4396

【Python 基础教程 18】全面解析Python数据结构:入门到自定义实现各种数据结构

Python3作为一门广泛应用的高级编程语言,对数据结构的使用具有其独特的优势。Python3的内置数据类型如列表(Lists)、元组(Tuples)、字典(Dictionaries)和集合(Sets),都可以视为一种特定的数据结构,其高度的可用性和灵活性使得Python在数据处理和算法实现等方面具有显著的优势。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 2898

数据结构(Python)

二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉查找树二叉搜索树是一颗二叉树, 可以为空;如果不为空,满足以下性质:非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树本身也都是二叉搜索树。下面哪些是二叉搜索树, 哪些不是?二叉搜索树的特点:二叉搜索树的特点就是相对较小的值总是保存在左结点上, 相对较大的值总是保存在右结点上.那么利用这个特点, 我们可以做什么事情呢?

m0_68625595的博客 1893
上一篇: Python 炫技操作:安装包的八种方法
下一篇: 干货福利!手把手教你获取上千张cosplay小姐姐的美照
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值