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.编程语言的分类 机器语言:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集 ...
随机推荐
- link标签实现给网页标题前加一个小图标favicon.ico
使用方法如下:1.<link rel="shortcut icon " type="images/x-icon" href="./favicon ...
- WDA基础七:TABStrip
这个组件很少用. 一般用这个,是为了页面好看,还有就是布局排版的问题,因为多个页签其实占的是一块地... 新建ELEMENT TABStrip,右键tabstrip,插入页签,需要几个加几个... 加 ...
- python中bottle模块的使用
1.简介 2.示例 2.1一个简单的bottle接口 # -*- coding: utf-8 -*- from bottle import route, request, run import jso ...
- char和varchar、浮点数和定点数
cmd连接mysql数据库:找到mysql目录,进入到bin目录,然后在命令行中输入 mysql -hlocalhost -uroot -ppass ,连接mysql数据库成功. 1.char和var ...
- HTTP上传数据 :表单,二进制数据(multipart/form-data application/octet-stream boundary)
使用WinINet 一个较简单的例子:上传头像 void CBackstageManager::UpdateAvatarThreadProc(LPVOID params) { stForThread* ...
- day23-python操作数据库三
创建表import MySQLdb def connect_mysql(): db_config = { 'host': '192.168.1.5', 'port': 3306, 'user': 'w ...
- java⑥
import java.util.Scanner; /** * 所有在java.lang包下面的所有类 不需要显示的引入包! * java.util.Scanner : 想获取用户的输入 必须引入相关 ...
- 【阅读笔记】《C程序员 从校园到职场》第五章 内存操作
参考: 让你提前认识软件开发(8):memset()与memcpy()函数 https://blog.csdn.net/zhouzxi/article/details/22478081 让你提前 ...
- js 动态绑定鼠标事件
<script> function getElementsByClassName(n) { var classElements = [],allElements = document.ge ...
- (Java学习笔记) Java Threading (Java线程)
Java Threading (Java线程) ● Process & Thread Processes are the abstraction of running programs: A ...