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.

相识一场,记得顶我


集合操作

并集
>>> 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']
目录
相关文章
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1847 103
|
7月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
1711 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
7月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
660 0
|
9月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
6月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
631 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
6月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
512 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
8月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
563 18
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
631 20
|
9月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
711 51
|
8月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
793 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程