python顺序表的实现_python中的顺序表
Python中的list和tuple两种类型采用了顺序表的实现技术,tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似。
list的基本实现技术
Python标准类型list就是一种元素个数可变的线性表,可以加入和删除元素,并在各种操作中维持已有元素的顺序(即保序),而且还具有以下行为特征:
1)基于下标(位置)的高效元素访问和更新,时间复杂度应该是O(1);为满足该特征,应该采用顺序表技术,表中元素保存在一块连续的存储区中。
2)允许任意加入元素,而且在不断加入元素的过程中,表对象的标识(函数id得到的值)不变。为满足该特征,就必须能更换元素存储区,并且为保证更换存储区时list对象的标识id不变,只能采用分离式实现技术。
在Python的官方实现中,list就是一种采用分离式技术实现的动态顺序表。这就是为什么用list.append(x) (或 list.insert(len(list), x),即尾部插入)比在指定位置插入元素效率高的原因。
在Python的官方实现中,list实现采用了如下的策略:在建立空表(或者很小的表)时,系统分配一块能容纳8个元素的存储区;在执行插入操作(insert或append)时,如果元素存储区满就换一块4倍大的存储区。但如果此时的表已经很大(目前的阀值为50000),则改变策略,采用加一倍的方法。引入这种改变策略的方式,是为了避免出现过多空闲的存储位置。
List对象的C结构
Python中list是用下边的C语言的结构来表示的。ob_item是用来保存元素的指针数组,allocated是ob_item预先分配的内存总容量
typedef struct{
PyObject_VAR_HEAD
PyObject**ob_item;
Py_ssize_t allocated;
} PyListObject;
python顺序表的实现_python中的顺序表相关推荐
- python flask 表单提交_python中flask应用(表单处理)
本篇文章给大家带来的内容是关于python中flask应用(表单处理),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.为什么使用Flask-WTF? request对象公开了所有 ...
- python读取字典元素笔记_Python中列表、字典、元组数据结构的简单学习笔记
列表 列表是Python中最具灵活性的有序集合对象类型.与字符串不同的是,列表可以包含任何类型的对象:数字.字符串甚至其他列表.列表是可变对象,它支持原地修改的操作. Python的列表是: 任意对象 ...
- python双等号怎么输入_python中的星号‘*’和双星号‘**’的解说
一直以来,对于python中函数参数传递过程中出现的*和**,理解的稀里糊涂的.最近看了一篇博文,描述的非常清楚,所以自己也抽空写了一下,可以整理一下自己的思路,也可以帮助到像我一样的白白小学生. p ...
- python新式类c3算法_python中的MRO和C3算法
一. 经典类和新式类 1.python多继承 在继承关系中,python子类自动用友父类中除了私有属性外的其他所有内容.python支持多继承.一个类可以拥有多个父类 2.python2和python ...
- python输出自己的名字_python中 将你的名字转化成为二进制并输出
1 name = "吴彦祖" 2 for i in name: 3 i_by = bytes(i, encoding = "utf-8") 4 for i_bi ...
- python函数拟合不规则曲线_python中的多变量(多项式)最佳拟合曲线?
接受的答复 this question 提供了 a small multi poly fit library,它将使用numpy完成所需的任务,您可以将结果插入到绘图中,如下所述. 您只需将x和y点的 ...
- python里的join方法_python中join()方法介绍
描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str . join ( sequence ) 参数 sequence -- ...
- python常用函数的用法_python中常用函数整理
1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object):""&qu ...
- python怎么用第三方库_python中第三方库的下载方法
1.最常用:在命令行中输入 pip install "库名称" 例如 pip install gensim 查看pip的命令集: pip uninstall "库名& ...
最新文章
- Linux tcpdump命令详解与Wireshark
- Tomcat 系统架构与设计模式,第 1 部分: 工作原理
- 8-Mybatis 的动态 SQL 语句
- php集合与数组的区别,php数组和链表的区别总结
- 类的自动转换和强制类型转换
- 奇安信荣获中国电子2021年度科技进步奖一、二等奖
- [lua]紫猫lua教程-命令宝典-L1-01-11. lua的个人补充
- AD16导出Gerber文件教程
- 参加2022年7月PMP考试后感受
- 【Web技术】969- 如何实现高性能的在线 PDF 预览
- [含论文+答辩PPT+任务书+中期检查表+源码等]基于ssm的NBA球队管理系统
- 计算机网络管理员操作技能考试试卷操作,计算机网络管理员高级工操作技能考核试卷(第一套)...
- word目录中英文开头目录不对齐
- python删除数组元素_如何删除numpy数组中的特定元素
- OutMan——Objective-C中的ARC介绍和block的使用
- JavaScript调用pc和手机摄像头
- 纯真IP/ZXinc_IPv6数据库镜像及MySQL脚本更新同步更新 for Python 3.x
- MATLAB的appdesigner背景图片设置
- 从架构到算法到赋能业务,关于国际化电商技术链路的最完整分享【Lazada技术开放日】
- WEB开发碰到的问题及经验十八则