写作目的

在编程过程,特别是线上编程的过程中,总会需要用到很多高级的数据结构,但是python中的一些高级数据结构并没有那么的“明显”,这里梳理一下。

栈在python中比较好实现,直接用List数据结构就可以代替。add方法用append代替,有内置的pop()方法,时间复杂度O(1),至于peek()方法可以直接用索引-1代替。

myStack=[]
myStack.append(1)
myStack.append(2)
myStack.append(3)
myStack
Out[8]: [1, 2, 3]
myStack.pop()
Out[9]: 3

队列

一般的队列可能大部分人都跟我的使用差不多,还是用list来实现,get()方法用pop(0)代替。但是我以前的文章中应该已经说过,pop(0)的时间复杂度比较的高。
这里可以引用python自己的队列结构。

import queue
myQueue=queue.Queue()
myQueue.put(2)
myQueue.put(3)
myQueue.put(1)
myQueue.put(5)
myQueue.get()
Out[16]: 2
myQueue.get()
Out[17]: 3

没有去深究get()的实现方法,但是这个内置,至少很香,应该比用list维护要香。

优先队列

不但可以从小到大排序,还可以取出优先的前k个树(越小越优先),而且算法复杂度是logn级别的,其实自己也可以用二叉堆进行实现,但是调用现成的,而且是内置的,肯定更舒服。

import queue
#优先队列
priQue=queue.PriorityQueue()
priQue.put([3,"赵"])
print(priQue.queue)
priQue.put([2,"钱"])
print(priQue.queue)
priQue.put([1,"孙"])
print(priQue.queue)
priQue.put([7,"李"])
print(priQue.queue)
priQue.put([5,"周"])
print(priQue.queue)
##取数据
# print(priQue.get())
# print(priQue.get())
# print(priQue.get())
# print(priQue.get())
print(priQue.get())

双端队列

左右都可追加,左右都可弹出,collection是一个不错的包,改天好好研究下。

import collections...: dque=collections.deque()...: dque.append(2)...: dque.append(3)...: dque.append(4)...: dque.append(5)...: dque.append(6)...: dque.appendleft(7)...: print(dque.popleft())...: print(dque.pop())
7
6

小顶堆

堆就是个完全二叉树,跟优先队列是一样的,不同的是这里每次都可以窥探到二叉堆的顶元素

import heapq#堆结构,初始化为小顶堆...: heap=[3,4,1,52,3]...: heapq.heapify(heap)
print(heap)
[1, 3, 3, 52, 4]
heapq.heappush(heap,4)
print(heap)
[1, 3, 3, 52, 4, 4]
heapq.heappush(heap,2)
print(heap)
[1, 3, 2, 52, 4, 4, 3]
heapq.heappop(heap)
Out[52]: 1
print(heap)
[2, 3, 3, 52, 4, 4]

python内置高级数据结构相关推荐

  1. python内置的数据结构_Python内置数据结构

    「Python数据分析养成记」 第四篇 前言 前文讲解了Python的基础数据类型,但是对于复杂的问题,最基础的数据类型可能没法解决.例如,每个变量(容器)只能装一种饮料(雪碧或者可乐),那能否一个变 ...

  2. Python内置四大数据结构之字典的介绍及实践案例

    Python字典的介绍及实践案例 一.字典(Dict)介绍 字典是Python内置的四大数据结构之一,是一种可变的容器模型,该容器中存放的对象是一系列以(key:value)构成的键值对.其中键值对的 ...

  3. python内置的数据结构_python内置的数据结构

    详解列表List 这里是列表对象方法的清单: list.append(x) 添加一个元素到列表的末尾.相当于a[len(a):] = [x]. list.extend(L) 将给定列表L中的所有元素附 ...

  4. python / 内置的数据结构概述

    @time 2019-07-30 @author Ruo_Xiao @notice 后续部分这两天补充. 零.前言 type 中文名称 list 列表 tuple 元组 dict 字典 set 集合 ...

  5. Python 内置函数sorted()在高级用法

    对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. ...

  6. Python内置函数max()高级用法

    不管是排序还是选取最大值或者最小值,都应该有个规则或者顺序,而平时我们所说的最大值或最小值实际上也是在某种排序规则或顺序下的最大值和最小值.Python内置函数max().min()和sorted() ...

  7. Python内置函数int()高级用法

    int()函数常用来把其他类型转换为整数,例如: >>> int(3.2) 3 >>> int(1/3) 0 其实,int是Python内置类型之一,之所以能够当作 ...

  8. Python内置函数sorted()高级排序用法

    可以结合Python内置函数sorted()从入门到精通来看一些稍微基础的排序用法. >>> from operator import itemgetter >>> ...

  9. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

  10. python内置标准库不可以处理的文件是_精华 | 140种Python标准库、第三方库和外部工具都有了...

    原标题:精华 | 140种Python标准库.第三方库和外部工具都有了 作者 | 宋天龙 来源 | 大数据(ID:hzdashuju) [导读]Python数据工具箱涵盖从数据源到数据可视化的完整流程 ...

最新文章

  1. 解决JavaWeb项目代码报错
  2. 蛋白提取纯化的方法、注意事项及常见问题解答
  3. 2021牛客暑期多校训练营5 E-Eert Esiwtib(树形dp+位运算)
  4. 前端学习(1999)vue之电商管理系统电商系统之分析表单的数据
  5. 什么是「数独」,简单介绍
  6. 点这里安装Alexa工具条
  7. IT行业常见职位英语缩写及中文释义
  8. Linux下显示IP地理位置信息的小工具—nali(很强大)
  9. Python turtle库如何瞬间完成作图?难道只难像海龟一样慢慢爬吗?
  10. pytorch编写cuda/c++ extention 方法
  11. R语言:wilcox 无法精确计算带连结的p值
  12. 【Java设计模式】外观模式
  13. mysql 5.6 rpm 下载_mysql5.6 rpm包下载
  14. Kafka分区副本重分配源码分析
  15. [业界新闻] 网络多媒体老大Macromedia被Adobe收购!
  16. python 统计哈姆雷特词汇频率
  17. mac电脑安装nvm及使用的详细步骤
  18. kakaotalk语音验证码,已读怎么破?KakaoTalk超实用的隐藏功能,真的太好用了!
  19. 人脸检测(十一)--JDA算法
  20. 台式电脑计算机怎么用,台式电脑怎么设置定时关机

热门文章

  1. Gladder好强大
  2. 单线、双线、三线以及BGP线路有什么区别?
  3. 《OpenGL编程指南(原书第9版)》——3.4 OpenGL的绘制命令
  4. 卫星通信系统按照工作轨道分类
  5. ArchLinux 主题美化
  6. 滑动门套滑动门css,CSS选项卡、滑动门代码
  7. 转载:真正高人的解读——《三体 读后感》【宇宙尺度的战争】
  8. Docker | 基于docker启动jar包,并进行更新
  9. 搭建nginx服务器
  10. 搜狗输入法linux词库导入,搜狗输入法词库导入详解