Python 基础(九) | time random collections itertools 标准库详解
⭐本专栏旨在对 Python 的基础语法进行详解,精炼地总结语法中的重点,详解难点,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握 python 编程,同时为后续的数据分析,机器学习及深度学习的代码能力打下坚实的基础。
🔥本文已收录于 Python 基础系列专栏: Python基础系列教程 欢迎订阅,持续更新。
Python 自身提供了比较丰富的生态,拿来即用,可极大的提高开发效率
9.1 time 库
Python 处理时间的标准库
9.1.1 获取现在时间
(1)time.localtime() 本地时间
(2)time.gmtime() UTC 世界统一时间
北京时间比时间统一时间 UTC 早 8 个小时
9.1.2 时间戳与计时器
(1)time.time() 返回自纪元以来的秒数,记录 sleep
(2)time.perf_counter() 随意选取一个时间点,记录现在时间到该时间点的间隔秒数,记录 sleep
(3)time.process_time() 随意选取一个时间点,记录现在时间到该时间点的间隔秒数,不记录 sleep
perf_counter()精度较 time()更高一些
9.1.3 格式化输出时间
(1)time.strftime 自定义格式化输出
9.1.4 睡觉
(1)time.sleep()
9.2 random 库
随机数在计算机应用中十分常见
Python 通过 random 库提供各种伪随机数
基本可以用于除加密解密算法外的大多数工程应用
9.2.1 随机种子——seed(a=None)
(1)相同种子会产生相同的随机数
(2)如果不设置随机种子,以系统当前时间为默认值
9.2.2 产生随机整数
(1)randint(a, b)——产生[a, b]之间的随机整数
(2)randrange(a)——产生[0, a)之间的随机整数 注意是开区间
(3)randrange(a, b, step)——产生[a, b)之间以 setp 为步长的随机整数
9.2.3 产生随机浮点数
(1)random()——产生[0.0, 1.0)之间的随机浮点数
(2)uniform(a, b)——产生[a, b]之间的随机浮点数
9.2.4 序列用函数
(1)choice(seq)——从序列类型中随机返回一个元素
(2)choices(seq,weights=None, k)——对序列类型进行 k 次重复采样,可设置权重
中间的就是权重
(3)shuffle(seq)——将序列类型中元素随机排列,返回打乱后的序列
(4)sample(pop, k)——从 pop 类型中随机选取 k 个元素,以列表类型返回
5、概率分布——以高斯分布为例
gauss(mean, std)——生产一个符合高斯分布的随机数
多生成几个
【例 1】用 random 库实现简单的微信红包分配
【例 2】生产 4 位由数字和英文字母构成的验证码
9.3 collections 库——容器数据类型
9.3.1 namedtuple——具名元组
点的坐标,仅看数据,很难知道表达的是一个点的坐标
构建一个新的元组子类
定义方法如下:typename 是元组名字,field_names 是域名
可以调用属性
有元组的性质
确实是元组的子类
【例】模拟扑克牌
9.3.2 Counter——计数器工具
是字典的一个子类
最常见的统计——most_commom(n)
提供 n 个频率最高的元素和计数
元素展开——elements()
其他一些加减操作
【例】从一副牌中抽取 10 张,大于 10 的比例有多少
9.3.3 deque——双向队列
列表访问数据非常快速
插入和删除操作非常慢——通过移动元素位置来实现
特别是 insert(0, v) 和 pop(0),在列表开始进行的插入和删除操作
双向队列可以方便的在队列两边高效、快速的增加和删除元素
deque 其他用法可参考官方文档
9.4 itertools 库——迭代器
9.4.1 排列组合迭代器
(1)product——笛卡尔积
(2) permutations——排列
(3)combinations——组合 其结果元素不能重复
(4)combinations_with_replacement——元素可重复组合
9.4.2 拉链
(1)zip——短拉链
把相同位置上的元素组合在一起
长度不一时,执行到最短的对象处,就停止
(2)zip_longest——长拉链
长度不一时,执行到最长的对象处,就停止,缺省元素用 None 或指定字符替代
9.4.3 无穷迭代器
(1)count(start=0, step=1)——计数
(2)cycle(iterable)——循环
(3)repeat(object [, times])——重复
9.4.4 其他
(1)chain(iterables)——锁链
(2)enumerate(iterable, start=0)——枚举(Python 内置)
(3)groupby(iterable, key=None)——分组
itertools 其他函数可参考官方文档
版权声明: 本文为 InfoQ 作者【timerring】的原创文章。
原文链接:【http://xie.infoq.cn/article/d2b0e3138f0067ab746589b52】。未经作者许可,禁止转载。
评论