array固定类型的数据序列,与list类似,只不过成员必须是相同的基本类型

array.typecodes #包含所有可用类型代码的字符串bBuhHiIlLqQfd

输入代码 C型 Python类型 最小字节数 笔记
'b' 签名字符 INT 1  
'B' 无符号字符 INT 1  
'u' Py_UNICODE Unicode字符 2 (1)
'h' 签署简称 INT 2  
'H' 无符号短 INT 2  
'i' 签名int INT 2  
'I' 无符号整数 INT 2  
'l' 长签字 INT 4  
'L' 无符号长整数 INT 4  
'q' 签了很久 INT 8 (2)
'Q' 无符号long long INT 8 (2)
'f' 浮动 浮动 4  
'd' 浮动 8  
import array
import binascii
s = 'this is a ARRAY'
w = [1,2,3,4]
a = array.array('u',s)#实例化时候需要传递一个参数
b = array.array('i',w)
print(a,binascii.hexlify(a),b,binascii.hexlify(b)) 结果:
array('u', 'this is a ARRAY') b'' array('i', [1, 2, 3, 4]) b''
# 处理数组,类似其他的Python序列,可以采取同样方式扩展和处理array
a = array.array('i',range(3))
print(a)
a.extend(range(3))
print(a,a[3:5],list(enumerate(a))) 结果:
array('i', [0, 1, 2])
array('i', [0, 1, 2, 0, 1, 2]) array('i', [0, 1]) [(0, 0), (1, 1), (2, 2), (3, 0), (4, 1), (5, 2)]

heapq堆排序算法,堆(heap)是一种树形数据结构,其中子节点与父节点是一种有序关系。

#创建堆
import heapq
heap1 = []
for i in [19,9,4,10,11]:#元素逐个插入,形成堆结构
heapq.heappush(heap1,i)
print(heap1)
heap2 = [19,9,4,10,11] #目标已存在,直接转化堆结构
heapq.heapify(heap2)
print(heap2) for i in [0,13]:
heapq.heapreplace(heap2,i) #维持固定大小的堆,每次插入一个元素同时删除一个最小的元素
print(heap2) #heappop()删除最小值元素
for i in range(len(heap1)):
print(heapq.heappop(heap1),end=',')
print() 结果:
[4, 10, 9, 19, 11]
[4, 9, 19, 10, 11]
[9, 10, 19, 13, 11]
4,9,10,11,19,

bisect数组二等分算法,该模块支持按排序顺序维护列表,而无需在每次插入后对列表进行排序。对于昂贵的比较操作的长项目列表,这可能是比较常见的方法的改进。该模块被称为bisect是因为它使用基本的二分算法来完成其工作,

import bisect
import random
random.seek(1)
l = []
for i in range(1,10):
r = random.randint(1,100)
position =bisect.bisect(l,r)
bisect.insort(l,r)
print('%3d%3d'%(r,position),l) 结果:

  18 0 [18]
  73 1 [18, 73]
  98 2 [18, 73, 98]
   9 0 [9, 18, 73, 98]
  33 2 [9, 18, 33, 73, 98]
  16 1 [9, 16, 18, 33, 73, 98]
  64 4 [9, 16, 18, 33, 64, 73, 98]
  98 7 [9, 16, 18, 33, 64, 73, 98, 98]
  58 4 [9, 16, 18, 33, 58, 64, 73, 98, 98]

处理重复:

bisect.bisect_leftaxlo = 0hi = len(a)

bisect.bisect_rightaxlo = 0hi = len(a)

bisect.insort_leftaxlo = 0hi = len(a)

bisect.insort_rightaxlo = 0hi = len(a)

import bisect
import random
random.seed(1)
l = []
for i in range(1,10):
r = random.randint(1,100)
position =bisect.bisect_left(l,r)
bisect.insort(l,r)
print('%3d%3d'%(r,position),l)
结果:
18 0 [18]
73 1 [18, 73]
98 2 [18, 73, 98]
9 0 [9, 18, 73, 98]
33 2 [9, 18, 33, 73, 98]
16 1 [9, 16, 18, 33, 73, 98]
64 4 [9, 16, 18, 33, 64, 73, 98]
98 6 [9, 16, 18, 33, 64, 73, 98, 98]#相同值放在了左边
58 4 [9, 16, 18, 33, 58, 64, 73, 98, 98]

Queue 模块提供一个适用与多线程编程先进先出FIFO数据结构,可以用来在生产者和消费者线程之间安全的传递消息或者数据,为调用者处理锁定,使多个线程可以安全的处理同一个Queue实例

#基本的FIFO
import queue
q = queue.Queue()
for i in range(5):
q.put(i) #元素添加
while not q.empty():
print(q.get())#元素删除 结果
0
1
2
3
4 #LIFO队列,LifoQueue使用了后进先出(LIFO)顺序,通常与栈结构关联
import queue
q=queue.LifoQueue()
for i in range(5):
q.put(i) #元素添加
while not q.empty():
print(q.get())#元素删除
结果:
4
3
2
1
0 #优先队列,PriorityQueue使用队列内容的有序顺序来决定获取哪个元素 import queue
import threading class Job():
def __init__(self,priority,description):
self.priority = priority
self.description = description
print('new job',description) def __lt__(self, other):
return self.priority < other.priority q = queue.PriorityQueue() q.put(Job(3,'mid-level job'))
q.put(Job(10,'low-level job'))
q.put(Job(1,'important-level job')) def process_job(q):
while True:
next_job = q.get()
print('Processing job:',next_job.description)
q.task_done() #用task_done()以指示该项目已被检索并且所有工作都已完成,计数就会减少 workers = [threading.Thread(target=process_job,args=(q,)),
threading.Thread(target=process_job,args=(q,)),
] for w in workers:
print(w.getName())
w.setDaemon(True)
w.start() q.join()#阻塞,直到队列中的所有项目都被获取并处理 结果:
new job mid-level job
new job low-level job
new job important-level job
Thread-1
Processing job: important-level job
Thread-2
Processing job: mid-level job
Processing job: low-level job

struct 二进制数据结构,将字节解释为二进制数据,在字符串和二进制数据之间进行转换

weakref 对象的非永久引用

Python数据结构(二)的更多相关文章

  1. python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)

    python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...

  2. Python数据结构之四——set(集合)

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 经过几天的回顾和学习,我终于把Python 3.x中的基础知识介绍好啦.下面将要继续什么呢?让我想想先~~~嗯,还是 ...

  3. Python数据结构汇总

    Python数据结构汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.线性数据结构 1>.列表(List) 在内存空间中是连续地址,查询速度快,修改也快,但不利于频繁新 ...

  4. Python实现二叉堆

    Python实现二叉堆 二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树).二叉堆有两种:最大堆和最小堆.最大堆:父结点的键值总是大于或等于任何一个子节点的键值:最小堆: ...

  5. python数据结构之二叉树的统计与转换实例

    python数据结构之二叉树的统计与转换实例 这篇文章主要介绍了python数据结构之二叉树的统计与转换实例,例如统计二叉树的叶子.分支节点,以及二叉树的左右两树互换等,需要的朋友可以参考下 一.获取 ...

  6. python数据结构树和二叉树简介

    一.树的定义 树形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树.树的递归定义:树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否 ...

  7. 学习javascript数据结构(二)——链表

    前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...

  8. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  9. python数据结构与算法——链表

    具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向 ...

  10. python数据结构之图的实现

    python数据结构之图的实现,官方有一篇文章介绍,http://www.python.org/doc/essays/graphs.html 下面简要的介绍下: 比如有这么一张图: A -> B ...

随机推荐

  1. Java实现 LeetCode 414 第三大的数

    414. 第三大的数 给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大 ...

  2. Java实现 LeetCode 399 除法求值

    399. 除法求值 给出方程式 A / B = k, 其中 A 和 B 均为代表字符串的变量, k 是一个浮点型数字.根据已知方程式求解问题,并返回计算结果.如果结果不存在,则返回 -1.0. 示例 ...

  3. Java实现 蓝桥杯VIP 算法训练 判定数字

    算法训练 判定数字 时间限制:1.0s 内存限制:512.0MB 编写函数,判断某个给定字符是否为数字. 样例输入 9 样例输出 yes import java.util.Scanner; publi ...

  4. Java实现 LeetCode 222 完全二叉树的节点个数

    222. 完全二叉树的节点个数 给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集 ...

  5. Java实现洛谷 P1428 小鱼比可爱

    题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...

  6. python3 主机实时监控系统

    主机实时监控系统(可在局域网访问) 一.思路: 前端: 1.管理员登录(编写一个管理员登录界面) 技术:html+css 2.资源数据显示(用于显示主机资源数据情况) 插件:echarts+jquer ...

  7. MongoDB知识点总结

    一:MongoDB 概述    一.NoSQL 简介 1. 概念:NoSQL(Not Only SQL的缩写),指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数 ...

  8. 小程序-图片/文件本地缓存,减少CDN流量消耗

    写在前面 小程序网络图片读取: 在读取OSS图片CDN分发时流量大量消耗,导致资金费用增加. 网络图片比较大时,图片加载缓慢. 为了尽量减少上面两个问题,所以对已读的图片进行缓存处理,减少多次访问不必 ...

  9. el-table的花样需求---表格加图片、加音频、加序号、多级动态表头

    elemnet-ui组件库大家应该不陌生,在展示多条结构类似的数据方面,el-table可谓扛把子,不仅可以把数据展示的整齐,还支持排序.筛选或其他自定义操作.那么,除了上述的基本功能外,你还遇到过哪 ...

  10. 2020阿里最新出品的泰山版Java开发手册,告别垃圾代码

    说起华山,我就想起岳不群,不,令狐冲:说起泰山,我就想起司马迁,他的那句名言"人总有一死,或重于泰山,或轻于鸿毛",真的发人深省啊.这就意味着,阿里出品的泰山版 Java 开发手册 ...