博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python标准库(待续)
阅读量:6114 次
发布时间:2019-06-21

本文共 2768 字,大约阅读时间需要 9 分钟。

相识一场,记得顶我


集合操作

并集
>>> 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<=bTrue>>> c<=aTrue>>> c>=aFalse
因为集合是可变的,但是集合本身包含的是不可变对象,所以以下代码会报错。
>>> a = set([1,2,3])>>> b = set([2,3,4])>>> a.add(b)Traceback (most recent call last):  File "
", line 1, in
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)>>> qdeque([6, 0, 1, 2, 3, 4, 5])>>> q.pop()5>>> q.popleft()6>>> qdeque([0, 1, 2, 3, 4])>>> q.rotate(2)>>> qdeque([3, 4, 0, 1, 2])>>> q.extend([3,4])>>> qdeque([3, 4, 0, 1, 2, 3, 4])>>> q.extendleft([2,1])>>> qdeque([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']

转载地址:http://kcjka.baihongyu.com/

你可能感兴趣的文章
存储过程
查看>>
phpcms v9栏目列表调用每一篇文章内容方法
查看>>
python 自定义信号处理器
查看>>
我只是轻奢 40万内入门豪车最高让利7万!-搜狐汽车
查看>>
曲演杂坛--隐式转换
查看>>
远程桌面连接技巧--与主机拷贝文本及拷贝文件(转)
查看>>
MVC中下拉框显示枚举项
查看>>
Linux基础精华
查看>>
SqlServer2008第一次安装后连接问题
查看>>
cocos2d-x Schedule详解
查看>>
sdut 2163:Identifiers(第二届山东省省赛原题,水题)
查看>>
C++ 容器:顺序性容器、关联式容器和容器适配器
查看>>
mysql 常用语句集
查看>>
Atitit.软件开发提升稳定性总结
查看>>
lftp查看文件时间与登录服务查看文件时间相差8小时
查看>>
[leetcode]Next Permutation @ Python
查看>>
JAVA(2)——JDBC
查看>>
php heredoc 与 nowdoc
查看>>
DBA_Oracle DBA常用表汇总(概念)
查看>>
第30周二
查看>>