1. 数据结构的操作

作为一种包含元素的数据结构,需要提供一些“标准”操作:

  • 创建和销毁
  • 判断是否空,如果容量有限,还需判断是否满
  • 向结构中加入元素或从中删除
  • 访问结构里的元素

不同的编程语言可能影响需要实现的操作:

由于python能自动回收不用的对象,因此不需要销毁结构的操作


2. 从支持操作类型的角度看,数据结构可分为两类:

  • 不变数据结构,如python中的tuple和frozenset
  • 变动数据结构,如python中的list,dict,set

3. python的list

list是一种线性结构,可看作线性表的一种实现:

  • 基于下标(位置)的元素访问和更新操作,复杂性为O(1)
  • 允许任意加入元素,而且维持表对象标识不变(id())

list实现约束和解决方案:

  • 要求O(1)的元素访问并维持元素的顺序,只能采用连续表技术,元素保存在一块连续存储区
  • 要能容纳任意多个元素,必须在元素个数将要超出存储区容量时换一块更大的存储区。要想在替换存储时id不变,只能采用分离式实现

list里元素越多,换一次存储区的代价也越高:

  • 要想平均结果较好,随着表长度增加,换存储区的频率应降低
  • 一种可能做法:每次换存储区,容量加倍

一次高开销操作后,保证有很多次低开销操作,称为分期付款式的常量复杂性

python中list采用上述设计,因此lst.insert(len(lst), x)比一般位置加入的效率高.等价写法lst.append(x),若合适就应优先使用。

转载于:https://www.cnblogs.com/Bella2017/p/8094667.html

python数据结构与算法之list相关推荐

  1. Python天天美味(32) - python数据结构与算法之堆排序

    1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data):     for i in ran ...

  2. python数据结构与算法13_python 数据结构与算法 (13)

    python 数据结构与算法 (13) 选择排序 (Selection sort) 是? 种简单直观的排序算法. 它的? 作原理如 下.? 先在未排序序列中找到最?(?)元素, 存放到排序序列的起始位 ...

  3. python leetcode_leetcode 介绍和 python 数据结构与算法学习资料

    for (刚入门的编程)的高中 or 大学生 leetcode 介绍 leetcode 可以说是 cs 最核心的一门"课程"了,虽然不是大学开设的,但基本上每一个现代的高水平的程序 ...

  4. Python数据结构与算法(二)栈和队列

    本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...

  5. Python数据结构与算法(一)列表和元组

    本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...

  6. Python 数据结构与算法——快排

    Python 数据结构与算法--选取算法(TopK) 如果说快速选取法所代表的是剪枝式的遍历操作--在递归树中找出一条通往第 k<script type="math/tex" ...

  7. Python 数据结构与算法——从二分图到寻找最大排列(Maximum Permutation)

    假设现在有 8 位有着特殊癖好的人去买票看电影,其中有一部分人得到了自己喜欢的座位,但大多数人并不满意.现在的问题是,如果这些人各自都有自己喜欢的座位(喜欢的座位有重叠,这是进行最大排列的前提,否则无 ...

  8. Python数据结构与算法(4.1)——递归

    Python数据结构与算法(4.1)--递归 0. 学习目标 1 递归 1.1 递归的基本概念 1.2 递归的重要性 1.3 递归三原则 1.4 递归的应用 2 递归示例 2.1 列表求和 2.2 汉 ...

  9. Python数据结构与算法(3.5)——双端队列

    Python数据结构与算法(3.5)--双端队列 0. 学习目标 1. 双端队列的基本概念 1.1 双端队列的基本概念 1.2 双端队列抽象数据类型 2. 双端队列的实现 2.1 顺序双端队列的实现 ...

  10. Python数据结构与算法(3.1)——栈

    Python数据结构与算法(3.1)--栈 0. 学习目标 1. 栈的基本概念 1.1 栈的基本概念 1.2 栈抽象数据类型 1.3 栈的应用场景 2. 栈的实现 2.1 顺序栈的实现 2.2 链栈的 ...

最新文章

  1. Linux环境编程--linux中的perror、exit、_exit、wait 和 waitpid
  2. 高桥盾react和boost_boost与react的战斗
  3. 为啥阿里巴巴规定要在 @Transactional 指定 rollbackFor?
  4. Java逆向基础之AspectJ的Eclipse插件AJDT
  5. Redis中的List 列表
  6. JSP自定义标签由浅到深讲解
  7. mysql迁移、备份数据表,导出表数据与结构
  8. python可以通过引用来对象吗_Python的可调用对象
  9. 将 url query参数 字符串转换为JSON 对象
  10. 计算机电源管理器怎么打开,联想电池管理如何使用_联想电源管理软件在哪里打开-win7之家...
  11. 程序员因接外包坐牢 456 天!两万字揭露心酸经历
  12. 核磁计算机系统包括,核磁共振和CAT扫描系统
  13. 转:如何做好团队复盘?3大阶段、9个步骤
  14. android自定义通知栏样式,Android 通知栏自定义样式
  15. 借助于栈结构将一个单链表逆置
  16. 维度建模——维度建模与数据仓库概述
  17. 基于php鲜花花卉销售商城网站(源码+系统+mysql数据库+Lw文档)
  18. 【Python】flask框架学习 flask框架的基本使用
  19. CPU和cache的区别、RAM和ROM的区别、常见的名称缩写
  20. 上云要有云驱动,中机助力企业上云|中机智库

热门文章

  1. 黑马程序员:从零基础到精通的前端学习路线
  2. 什么是集成测试?非渐增式和渐增式有什么区别
  3. UFLDL深度学习笔记 (三)无监督特征学习
  4. 6.0的版本的 tc,不支持大漠对象做数组吗?
  5. Microsoft Visual Studio Learning Pack 自动生成流程图插件(转)
  6. 利用vector定义MAT类对象数组的方法
  7. 详解图像直方图均衡化原理,附MATLAB、C、C++源码
  8. OpenCV中利用cvConvertScale()将图像的数据类型由u8转化为64f...
  9. java valueof的用法_Java SignStyle valueOf()用法及代码示例
  10. 使用ssh做端口转发