Python标准库(待续)
相识一场,记得顶我
集合操作
并集
>>> 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']
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python字符串基础操作
找到我就是缘分,为技术一起努力! 格式符 # price_width = 10 item_width = width - price_width header_format = '%-*s%*s' format = '%-*s%*.2f' print '=' * width print header_format % (item_width, 'Item', price_width, 'Price') print '-' * width print format % (item_width,'Apples',price_width,0.4) print format %(item_width,'Pears', price_width,0.5) print format %(item_width,'Cantaloupes',price_width,1.92) find(str,start,end):从start开始end结束寻找与str相匹配的字符,找到返回匹配项index,找不到返回-1 a='With a moo-moo here. and a moo-moo there'.find...
- 下一篇
Django实战(一)之简单Demo
菜鸟教程上Django安装可供参考: 参考链接: http://www.runoob.com/django/django-install.html 菜鸟教程上如果不行的话,下面博客网址可以供参考 Linux安装Python2.7和Django可以参考: 参考链接:https://www.cnblogs.com/Python666/p/8118479.html 另外说明关于pip版本导致安装Django失败问题,可参考链接为:https://blog.csdn.net/elare/article/details/52658809 Hello World是任何开发者再学习一门新的技术时,通常第一接触的。 简单的例子,有助于增加学习者的信心。 (1)Django创建第一个项目 django-admin startproject HelloWorld目录结构为: 目录说明: HelloWorld:项目的容器。 manage.py:一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。 HelloWorld/__init__.py:一个空文件,告诉 Python 该...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启