Python简要标准库(2)
集合 堆 和 双端队列
1.集合
创建集合
s = set(range(10))
和字典一样,集合元素的顺序是随意的,因此不能以元素的顺序作为依据编程
集合支持的运算
a = set([1,2,3])
b = set([2,3,4])
other = set([99,98,97]) #|
c = a | b
print (c)
print (a.union(b)) #&
c = a&b
print (c)
print (a.intersection(b)) #-
c = a - b
print (c)
print (a.difference(b)) #^
c = a ^ b
print (c)
a.symmetric_difference(b) print (c.issubset(a))
print (c <= a)
print (c >= a)
若需要集合中包含集合 可以这样
#error
a.add(b)
#right
print (a.add(frozenset(b)))
2.堆
这是优先队列的一种 使用优先队列能够以任意顺序增加对象,而且能在极短时间内 找到 最小的元素
heappush(heap,x) | 将x入堆 |
heappop(heap) | 将堆中对小的元素弹出 |
heapify(heap) | 将heap属性强制应用到任意一个列表 |
heapreplace(heap,x) | 将堆中最小元素弹出,同时将x入堆 |
nlargest(n,iter) | 返回iter中第n大的元素 |
nsmallest(n,iter) | 返回iter中第n大的元素 |
from heapq import *
from random import shuffle
data = list(range(10))
shuffle(data)
heap = []
for n in data:
heappush(heap,n) print ('init')
print (heap) print ('pop 3 min elements')
print (heappop(heap))
print (heappop(heap))
print (heappop(heap)) print ('show')
print (heap) print ('pop and push 0.5')
heapreplace(heap,0.5)
print (heap)
注意:显示(print)的堆(heap) 是按标准数组形式的表示的 (即i位置处的元素总比2*i以及2*i + 1位置处的元素小 ) 好像就是创建了最小堆 :)
3.双端队列
在需要按照元素增加的顺序来移除元素时非常有用
from collections import deque
q = deque(range(5))
print (q) print ('#q.append(5) q.appendleft(6)')
q.append(5)
q.appendleft(6)
print (q) print ('#q.pop()')
q.pop()
print (q) print ('#q.popleft()')
q.popleft()
print (q) print ('#q.rotate(3)')
q.rotate(3)
print (q)
双端队列好用的原因是他能够有效的在开头(左侧)增加和弹出元素 这是在列表中无法实现的。
除此之外,使用双端队列的好处是:能够有效的旋转元素(rotate)(也就是将它们左移或者右移,使头尾相连)
time
time模块所包括的函数能够实现以下功能:获得当前时间 操作时间和日期 从字符串读取时间以及格式化时间为字符串。
asctime([tuple]) | 将时间元组转换为字符串 |
localtime([secs]) | 将秒数转换为日期元组,以本地时间为准 |
mktime(tuple) | 将时间元组转换为本地时间 |
sleep(secs) | 休眠(不作任何事情)secs秒 |
strptime(string[,format]) | 将字符串解析为时间元组 |
time() | 当前时间(UTC) |
Python还提供了两个和时间密切相关的函数 datetime(支持日期和时间的算法) 和 timeit(帮组开发人员对代码段的执行时间计时)
random
random模块包含了返回随机数的函数,可以用来模拟或者产生随机输出的程序
注意:如果真的需要随机性,应该使用os模块的urandom函数
random() | 返回(0,n]之间的随机数 |
getrandbits() | 以长整形式返回n个随机位 |
uniform() | 返回随机实数n,其中[a,b) |
randrange([start],stop,[step]) | 返回range(start,stop,step)中的随机数 |
choice(seq) | 从序列seq中返回随意元素 |
shuffle(seq[,random]) | 原地指定序列seq |
sample(seq,n) | 从序列seq中选择n个随机且独立的元素 |
random和time示例:
随机获取区域内时间
from time import *
from random import * date1 = (2008,1,1,0,0,0,-1,-1,-1)
date2 = (2009,1,1,0,0,0,-1,-1,-1) time1 = mktime(date1)
time2 = mktime(date2)
random_time = uniform(time1,time2)
print (asctime(localtime(random_time)))
Python简要标准库(2)的更多相关文章
- Python简要标准库(1)
sys sys这个模块让你能够访问与Python解释器联系紧密的变量和函数 其中的一些在下表 F argv 命令行参数,包括脚本名称 exit([arg]) 退出当前的程序,可选参数为给定的返回值或者 ...
- Python简要标准库(5)
hashlib Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 基本的生成MD密匙的函数 import hashlib md5 = hashlib.md5() md5.up ...
- Python简要标准库(3)
shelve 若只需要一个简单的存储方案,那么shelve模块可以满足你大部分的需要,你所需要的只是为它提供文件名.shelve中唯一有趣的函数是open,在调用的时候他会返回一个Shelf对象 注意 ...
- 【python】标准库的大致认识
正如那句 Python 社区中很有名的话所说的:“battery included”,Python 的一大好处在于它有一套很有用的标准库(standard library).标准库是随着 Python ...
- python 使用标准库连接linux实现scp和执行命令
import stat import pexpect 只显示关键代码: sqldb = localpath+database //获取database名字 if os.path.exists(sqld ...
- Python的标准库介绍与常用的第三方库
Python的标准库介绍与常用的第三方库 Python的标准库: datetime:为日期和时间的处理提供了简单和复杂的方法. zlib:以下模块直接支持通用的数据打包和压缩格式:zlib,gzip, ...
- Python 3标准库 第十四章 应用构建模块
Python 3标准库 The Python3 Standard Library by Example -----------------------------------------第十四章 ...
- python linecache标准库基础学习
#python标准库基础之:linecacge:高效读取文本文件#说明与作用"""可以从文件或者导入python模块获取文件,维护一个结果缓存,从而可以更高效地从相同文件 ...
- python StringIO标准库基础学习
#标准库:StringIO提供类文件API文本缓冲区#作用:可以处理内存中的文本,有2种不同的实现:cStringIP版本用c编写提高速度,StringIO用python来提供可移植性,与其他字符串连 ...
随机推荐
- Linux下安装Qt5.6.1
我的环境:CentOS 6.7 64位. 1.下载Qt: Qt版本有很多,自己比较菜,希望安装的过程越简单越好,感觉比较新的版本会好安装一些,5.4版本还要更新 /usr/lib64/libstdc ...
- Centos7 中使用Supervisor守护进程
转:https://www.cnblogs.com/qmhuang/p/8196132.html 配置supervisor实现进程守护 1.安装supervisor yum install Super ...
- C# 面向对象之多态
//多态:让一个对象表现的多种状态 //实现:子类重写父类的虚方法 Person person = new Person(); Chinese chinese = new Chinese(); Ame ...
- Web打印连续的表格,自动根据行高分页
拿到这个需求,我已经蛋碎了一地,经过N天的攻克,终于是把它搞定了,只是不知道会不会在某种情况下出现BUG.表示我心虚没有敢做太多的测试.... ---------------------------- ...
- I/O复用——各种不同的IO模型
一.概述 我们看到上面的TCP客户同时处理两个输入:标准输入和TCP套接字.我们遇到的问题就是在客户阻塞于(标准输入上的)fgets调用期间,服务器进程会被杀死.服务器TCP虽然正确地给客户TCP发送 ...
- java连接linux的三种方式(附执行命令)
# 本地调用使用JDK自带的RunTime类和Process类实现 public static void main(String[] args){ Process proc = RunTime.get ...
- Oracle GoldenGate同步服务归档空间维护
ORA-00257: archiver error. Connect internal only, until freed 查看归档日志序列 SQL> archive log list; Aut ...
- iOS:CALayer(17-12-06更)
目录 1.CALayer(父类) 2.CAShapeLayer(形状/画布) 3.CAEmitterLayer(粒子发射层) 4.CAGradientLayer(渐变层) 5.CATransformL ...
- Spring知识点小结(三)
一.aop的简介 aop:面向切面编程 aop是一种思想,面向切面编程思想,Spring内部提供了组件对aop进行实现 aop是在运行期间使用动态代理技术实现的思想 aop是oop延 ...
- 【模板】RMQ(计算区间最值)
①一维RMQ (1) dp[i,j] 表示从第i个数起连续2j个数中的(最大值min.最小值max.最大公约数gcd……),通过更改下列代码中的红色函数即可实现. (2) b数组放置所需查询的数列. ...