您现在的位置是:首页 > 文章详情

Python标准库(待续)

日期:2018-08-07点击:334

相识一场,记得顶我


集合操作

并集
>>> a = set([1,2,3]) >>> b = set([2,3,4]) >>> a.union(b) {1, 2, 3, 4} >>> a|b {1, 2, 3, 4} 
交集
>>> a = set([1,2,3]) >>> b = set([2,3,4]) >>> a.intersection(b) {2, 3} >>> a&b {2, 3} 
子集归属
>>> c = a&b >>> c.issubset(a) True >>> c<=b True >>> c<=a True >>> c>=a False 
因为集合是可变的,但是集合本身包含的是不可变对象,所以以下代码会报错。
>>> a = set([1,2,3]) >>> b = set([2,3,4]) >>> a.add(b) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set' 
这时候我们需要使用frozenset类型,用于代表不可变的集合,它会创建一个副本对象加入到集合中。
>>> a.add(frozenset(b)) >>> a {1, 2, 3, frozenset({2, 3, 4})} 
堆操作

堆是一种数据结构,它是优先队列的一种,它在查找方面比列表的效率要高得多。

heappush(heap,x) 入堆
heappop(heap) 出堆
heapify(heap) 把可迭代对象转换为堆
heapreplace(heap,x) 将堆中最小元素弹出,同时将x入堆
nlargest(n,iter) 找出可迭代对象中第n大元素
nsmallest(n,iter) 找出可迭代对象中第n小元素

>>> from heapq import * >>> from random import shuffle >>> data = range(10) >>> shuffle(data) >>> heap = [] >>> for n in data: heappush(heap,n) >>> heap [0, 2, 1, 3, 5, 7, 4, 6, 9, 8] >>> heappop(heap) 0 >>> heappop(heap) 1 >>> heappop(heap) 2 >>> heappop(heap) 3 >>> heap [4, 5, 7, 6, 9, 8] ----------------------------------------- >>> heap = [9,7,2,4,5,6,2,3,1] >>> heapify(heap) >>> heap [1, 3, 2, 4, 5, 6, 2, 7, 9] ----------------------------------------- >>> heapreplace(heap,0.5) 1 >>> heap [0.5, 3, 2, 4, 5, 6, 2, 7, 9] 

从上述代码运行的结果可以看出,这是一个小根堆的排序算法---位于i位置上的元素总比i/2位置处的元素大,反过来也就是i位置处的元素总比2i和2i+1位置处的元素小。

双端队列
>>> from collections import deque >>> q = deque(range(5)) >>> q.append(5) >>> q.appendleft(6) >>> q deque([6, 0, 1, 2, 3, 4, 5]) >>> q.pop() 5 >>> q.popleft() 6 >>> q deque([0, 1, 2, 3, 4]) >>> q.rotate(2) >>> q deque([3, 4, 0, 1, 2]) >>> q.extend([3,4]) >>> q deque([3, 4, 0, 1, 2, 3, 4]) >>> q.extendleft([2,1]) >>> q deque([1, 2, 3, 4, 0, 1, 2, 3, 4]) 

从上述代码可以看出双端队列的好处在于它可以在列表的两端进行操作和旋转列表。

time

可以使用实数表示,也可以使用包含9个整数的元组表示。如果使用元组表示,那这些整数的意义如下:
(2018,1,21,10,28,30,2,21,0)
表示2018年1月21日,10时28分30秒,星期3,当天为当年的第21天,(无夏令时)

asctime([tuple]) 将时间元组转换为字符串
localtime([secs])将秒数转换为日期元组,以本地时间为准
mktime(tuple)将时间元组转换为本地元组
sleep(secs)休眠
strptime(string[,format])将字符串解析为时间元组
time()当前时间
'Wed Jul 11 10:02:04 2018'

random

random() 返回0<n<=1之间的随机实数n
getrandbits(n) 以长整型形式返回n个随机位 (加密有用)
uniform(a,b) 返回随机实数n,其中a<=n<b,(a,b)之间的均匀分布
randrange([start],stop,[step]) 返回range(start,stop,step)中的实数
choice(seq)从序列seq中返回随意元素
shuffle(seq[,random])原地指定序列
seqsample(seq,n) 从序列seq中选择n个随机且独立的元素

re

re模块是一个正则表达式的模块

compile(pattern[,flags]) 根据包含正则表达式的字符串创建模式对象
search(pattern, string[,flags])在字符串中寻找模式
match(pattern,string[,flags]) 在字符串的开始处匹配模式
split(pattern,string[,maxsplit=0])根据模式的匹配来分割字符串
findall(pattern,string) 列出字符串中模式的所有匹配项
sub(pat,repl,string[,count=0])将字符串中所有pat的匹配项用repl替换
escape(string) 将字符串中所有特殊正则表达式字符转义

用任意长度的逗号和空格序列来分割字符串

some_text = 'alpha,beta,,,,gamma delta' re.split('[, ]+',some_text) ['alpha', 'beta', 'gamma', 'delta'] 
原文链接:https://yq.aliyun.com/articles/637548
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章