Python基础3--Python复杂数据类型
1 堆
堆是一种二叉树,其中每个父节点的值都小于或等于其所有子节点的值,最小的元素总是位于二叉树的根节点。
堆的创建
import heapq
import random
data = range(10)
random.shuffle(data) #打乱顺序
heap = []
for n in data:
heapq.heappush(heap,n)
print heap heapq.heappushpop(heap,0.5) #新数据入堆
heapq.heappop(heap) #弹出最小的元素,堆重建
列表转化为堆
myheap = [100,2,3,4,22,7,10,5]
heapq.heapify(myheap) #将列表转化为堆
heapq.heapreplace(myheap,6) #替代堆栈元素值,堆重建
heapq.nlargest(3,myheap) #返回最大的3个值
heapq.nsmallest(3,myheap) #最小3个
2 队列
队列的特点是First in first out, last in last out,先进先出,后进后出
import Queue
q = Queue.Queue()
q.put(0) #元素入队
q.put(1)
q.put(2)
print q.queue #deque([0, 1, 2])
print q.get() #元素0先出队
print q.queue() #deque([1, 2])
3 栈
栈的特点是Last in last out,first in last out,后进先出,先进后出
list 就可以实现栈的基本操作,append()相当于入栈,pop()相当于出栈,但是当列表为空时pop()操作会有异常,也无法限制栈的大小。
import Stack
x = Stack.Stack()
x.push(1)
x. push(2)
x.show()
x.pop()
x.show()
class Stack:
def __init__(self, size=10):
self._content = []
self._size = size
def empty(self):
self._content = []
def isEmpty(self):
if not self._content:
return True
else:
return False
def setSize(self,size):
self._size = size
def isFull(self):
if len(self._content)==self._size:
return True
else:
return False
def push(self,v):
if len(self._content)<self._size:
self._content.append(v)
else:
print 'Stack Full'
def pop(self):
if self._content:
return self._content.pop()
else:
print 'Stack is empty!'
def show(self):
print self._content
def showRemainderSpace(self):
print 'Stack can still PUSH',self.size-len(self._content),'elements.'
if __name__=='__main__':
print 'Please use me as a module'
4 链表
可以直接使用list及其基本操作实现链表的功能
linkTable = []
linkTable.append(3)
linkTable.append(5)
linkTable.insert(1,4)
linkTable.remove(linkTable[1])
5 二叉树
…
6 有向图
…
Python基础3--Python复杂数据类型的更多相关文章
- 二十一. Python基础(21)--Python基础(21)
二十一. Python基础(21)--Python基础(21) 1 ● 类的命名空间 #对于类的静态属性: #类.属性: 调用的就是类中的属性 #对象.属性: 先从自己的内存空间里找名 ...
- python基础之五大标准数据类型
学习一门语言,往往都是从Hello World开始. 但是笔者认为,在一个黑框框中输出一个"你好,世界"并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常 ...
- 第二章:Python基础の快速认识基本数据类型和操作实战
本课主题 字符串和操作实战 二进制操作实战 List 列表和操作实战 Tuple 元組和操作实战 Dict 字典和操作实战 作業需求 引言 这遍文章简单介绍了 Python 字符串和集合的方法和应用, ...
- python基础语法_2基本数据类型
http://www.runoob.com/python3 大纲 Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictionarys(字典 ...
- Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
[保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...
- python基础实践 -python是一门动态解释性的强类型定义语言
python是一门动态解释性的强类型定义语言 Python能做什么? Python是一门综合性的语言,你几乎能在计算机上通过Python做任何事情,以下是Python应该最广泛的几个方面: 1.网络应 ...
- python基础-初识Python和不同语言之间的区别
一.Python的创始人谁? Python之父:吉多·范罗苏姆GuidovanRossum 吉多·范罗苏姆是一名荷兰计算机程序员,他作为Python程序设计语言的作者而为人们熟知.在Python社区, ...
- Python基础 初识Python
机器码 机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据. 通常意义上来理解的话,机器码就是计算机可以直接执行,并且执 ...
- python基础7 ---python函数
python基础知识 一.闭包函数 1.闭包函数的定义:在一个内部函数中,在对外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包. 2.闭包函数的特点:自带作用域和延迟计算 补 ...
- python基础1 ---python简介
python基础 一.python前言 1.什么是编程语言 编程语言是程序员与计算机之间沟通的介质. 2.编程语言的分类 机器语言:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集 ...
随机推荐
- MongoDB 教程(三):MongoDB 的下载、安装和配置
一.下载 下载地址:https://www.mongodb.com/download-center#community(这里是Windows 版,其他版本也可以在该网页进行下载) 版本选择: Mong ...
- InnoDB存储引擎介绍-(1)InnoDB存储引擎结构
首先以一张图简单展示 InnoDB 的存储引擎的体系架构. 从图中可见, InnoDB 存储引擎有多个内存块,这些内存块组成了一个大的内存池,主要负责如下工作: 维护所有进程/线程需要访问的多个内部数 ...
- Oracle 11.2.0.4.0 Dataguard部署和日常维护(2)-Datauard部署篇
1. primary库设置dataguard相关参数 1.1. 强制primay库在任何状态下必须记录日志 SYS@userdata>select FORCE_LOGGING from v$ ...
- js向一个数组中插入元素的几个方法-性能比较
向一个数组中插入元素是平时很常见的一件事情.你可以使用push在数组尾部插入元素,可以用unshift在数组头部插入元素,也可以用splice在数组中间插入元素. 但是这些已知的方法,并不意味着没有更 ...
- A Bug's Life(向量偏移)
A Bug's Life Time Limit : 15000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total ...
- InnoDB存储引擎的 B+ 树索引
B+ 树是为磁盘设计的 m 叉平衡查找树,在B+树中,所有的记录都是按照键值的大小,顺序存放在同一层的叶子节点上,各叶子节点组成双链表.叶节点是数据,非叶节点是索引. 首先,需要清楚:B+ 树索引并不 ...
- Windows服务手动关闭教程
Windows上关闭软件自启动,经常使用360等软件的开机加速功能去优化. 但有时候有些服务开机是启动的但在360中并没有找到那如何手动关闭这些服务的自启动呢? 下边以Autodesk Applica ...
- C/C++ 全局变量的访问
#include <iostream> using namespace std; ; int main(int argc, char **argv) { ; std::cout <& ...
- Win10系列:JavaScript 项目模板中的文件和项模板文件
通过上面内容的学习,相信读者已经对各种项目模板和项模板有了大致的了解,本节将进一步介绍项目模板中默认包含的项目文件以及项模板文件,首先讲解这些文件中的初始内容以及作用,然后介绍在一个页面中如何添加控件 ...
- API服务网关(Zuul)
技术背景 前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡,那我们的各种微服务又要如何提供给外部应用调用呢. 当然,因为是REST API接口,外部客户端直接调用各个微服务是没有问 ...