当前位置: 首页 > news >正文

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']

相关文章:

  • Python 爬虫获取网易云音乐歌手信息
  • WPF查找父元素子元素
  • 如何用vue打造一个移动端音乐播放器
  • VBoot1.0发布,Vue SpringBoot 综合开发入门
  • Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded.
  • String 转 Json 记录[abc,bcd] json 解析
  • 学习笔记之流文件操作01(拷贝文件)
  • CentOS 7----Apache基于域名的虚拟主机配置
  • Unity 之 Pure版Entity Component System (ECS)  官方Rotation示例解析
  • 读《Design Patterns by Tutorials》笔记——MVC
  • MyBatis Generator的使用
  • Confluence 6 外部参考
  • 带搜索的下拉框(select2插件)
  • Unity之使用技巧记录
  • openstack的Host Aggregates和Availability Zones
  • @angular/forms 源码解析之双向绑定
  • es6
  • Fabric架构演变之路
  • Leetcode 27 Remove Element
  • PV统计优化设计
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Transformer-XL: Unleashing the Potential of Attention Models
  • ViewService——一种保证客户端与服务端同步的方法
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • #include到底该写在哪
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (3)(3.5) 遥测无线电区域条例
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (二)WCF的Binding模型
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (生成器)yield与(迭代器)generator
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十一)图像的罗伯特梯度锐化
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)项目管理杂谈-我所期望的新人
  • **python多态
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 使窗口永不获得焦点
  • .NET企业级应用架构设计系列之开场白
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @javax.ws.rs Webservice注解
  • @property @synthesize @dynamic 及相关属性作用探究
  • @RequestParam详解
  • @Transactional 竟也能解决分布式事务?
  • [ 第一章] JavaScript 简史
  • [20160807][系统设计的三次迭代]
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [4.9福建四校联考]
  • [8-27]正则表达式、扩展表达式以及相关实战