Python简要标准库(2)

集合 堆 和 双端队列



1.集合

创建集合

1 s = set(range(10))

和字典一样,集合元素的顺序是随意的,因此不能以元素的顺序作为依据编程

集合支持的运算

 1 a = set([1,2,3])
 2 b = set([2,3,4])
 3 other = set([99,98,97])
 4
 5 #|
 6 c = a | b
 7 print (c)
 8 print (a.union(b))
 9
10 #&
11 c = a&b
12 print (c)
13 print (a.intersection(b))
14
15 #-
16 c = a - b
17 print (c)
18 print (a.difference(b))
19
20 #^
21 c = a ^ b
22 print (c)
23 a.symmetric_difference(b)
24
25
26 print (c.issubset(a))
27 print (c <= a)
28 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大的元素
 1 from heapq import *
 2 from random import shuffle
 3 data = list(range(10))
 4 shuffle(data)
 5 heap = []
 6 for n in data:
 7     heappush(heap,n)
 8
 9 print (‘init‘)
10 print (heap)
11
12 print (‘pop 3 min elements‘)
13 print (heappop(heap))
14 print (heappop(heap))
15 print (heappop(heap))
16
17 print (‘show‘)
18 print (heap)
19
20 print (‘pop and push 0.5‘)
21 heapreplace(heap,0.5)
22 print (heap)

注意:显示(print)的堆(heap) 是按标准数组形式的表示的 (即i位置处的元素总比2*i以及2*i + 1位置处的元素小 )  好像就是创建了最小堆 :)

3.双端队列

在需要按照元素增加的顺序来移除元素时非常有用

 1 from collections import deque
 2 q = deque(range(5))
 3 print (q)
 4
 5 print (‘#q.append(5) q.appendleft(6)‘)
 6 q.append(5)
 7 q.appendleft(6)
 8 print (q)
 9
10 print (‘#q.pop()‘)
11 q.pop()
12 print (q)
13
14 print (‘#q.popleft()‘)
15 q.popleft()
16 print (q)
17
18 print (‘#q.rotate(3)‘)
19 q.rotate(3)
20 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示例:

随机获取区域内时间

 1 from time import *
 2 from random import *
 3
 4 date1 = (2008,1,1,0,0,0,-1,-1,-1)
 5 date2 = (2009,1,1,0,0,0,-1,-1,-1)
 6
 7 time1 = mktime(date1)
 8 time2 = mktime(date2)
 9 random_time = uniform(time1,time2)
10 print (asctime(localtime(random_time)))
时间: 2024-10-09 12:36:13

Python简要标准库(2)的相关文章

Python简要标准库(4)

hashlib Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 基本的生成MD密匙的函数 1 import hashlib 2 3 md5 = hashlib.md5() 4 md5.update('This is my password'.encode('utf-8')) 5 print(md5.hexdigest()) 若是把password改为了password2 所得到的MD5就完全不一样了 这体现了MD5的单向加密功能的强大 若要生成SHA1密匙的话,只需要

Python简要标准库(1)

sys sys这个模块让你能够访问与Python解释器联系紧密的变量和函数 其中的一些在下表 argv 命令行参数,包括脚本名称 exit([arg]) 退出当前的程序,可选参数为给定的返回值或者错误信息 modules 映射模块名字到载入模块的字典 path 查找模块所在目录的目录名列表 platform 类似sunos或者win32的平台标识符 stdin 标准输入流 stdout 标准输出流 stderr 标准错误流 示例:   os os模块提供了访问多个操作系统服务的功能 enviro

Python简要标准库(3)

shelve 若只需要一个简单的存储方案,那么shelve模块可以满足你大部分的需要,你所需要的只是为它提供文件名.shelve中唯一有趣的函数是open,在调用的时候他会返回一个Shelf对象 注意: 只需要把它当作普通字典(但是键一定要是字符串)来操作 在操作完之后,调用它的close方法 在python2.4之后的版本还有一个解决方案,将open函数的writeback参数设为True.这样所有从shelf读取或者赋值到shelf的数据结构都会保存在内存(缓存)中,而且只有在关闭shelf

一、Python的标准库String

一.Python的标准库String 1.查看武器 a. help(type()) name = "jane"print(help(type(name))) b. capitalize() name = "jane" print(name.capitalize()) 效果:Jane c. center() name = "jane" print(name.center(50, '-')) 效果:-----------------------jan

Python 3标准库 第十四章 应用构建模块

Python 3标准库 The Python3 Standard Library by  Example -----------------------------------------第十四章     应用构建模块-----------------------------14.1  argparse:命令行选项和参数解析----------------------------- argparse模块 14.1.1  建立解析器 14.1.2  定义参数 argparse模块 14.1.3 

python MultiProcessing标准库使用Queue通信的注意要点

今天原本想研究下MultiProcessing标准库下的进程间通信,根据 MultiProcessing官网 给的提示,有两种方法能够来实现进程间的通信,分别是pipe和queue.因为看queue顺眼,就想着拿queue实现,后来,被坑了....于是有了这篇文章.我按照 python标准库之MultiProcessing库的研究 (1) 里面的代码来的,结果就是不断的出错,死过就是不出结果,看看程序: from multiprocessing import Pool, queues impor

找到python官方标准库文档

python中有很多标准库.我们没法记住全部标准库,但是可以在:https://docs.python.org/3/py-modindex.html 中查看标准库的索引 在python的官方文档中,如图所示,为python标准库的文档位置

python之标准库

Python的标准安装包括一组模块,称为标准库. 10.1 模块 >>>emport math >>>math.sin(0) 0.0 10.1.1 模块是程序 任何python程序都可以作为模块导入. #hello.py print "hello,world!" 解释器在哪里寻找模块.(windows) >>>import sys >>>sys.path.append('c:/python') 在unix系统中,不

python linecache标准库基础学习

#python标准库基础之:linecacge:高效读取文本文件#说明与作用"""可以从文件或者导入python模块获取文件,维护一个结果缓存,从而可以更高效地从相同文件读取多行文本;此模块会在python标准库的其他部分中用到,缓存实现将在内存中保存文件内容(解析为单独的行).API通过索引一个列表返回所请求的行.与反复地读取文件并解析文本来查找所需文本行相比,这样可以节省时间,这个方法在查找同一个文件中多行尤其有用 ,比如一个异常."""im