chao

Posted zhangchaocoming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了chao相关的知识,希望对你有一定的参考价值。

Collections 模块

Collections模块的数据类型:Counter、deque、defaultdict、namedtuple、orderedDict等。

1、nametuple:官方读法叫做“具名元组”,生成可以使用名字来访问元素内容的tuple。

比如生成地理坐标:

技术图片

Namedtuple(‘名称’,‘参数’),参数既可以是一个可迭代对象,也可以是字符串,字符串之间要用空格隔开,我们所传的值要与参数的个数数量一致。

生成扑克牌:

技术图片

2,deque(双端队列):队列是先进先出,也叫FIFO(first in first out),双端队列就是两端都能进出,特点:使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候插入和删除效率很低。Deque是为了高效实现插入和删除操作的双向列表,适用于队列和栈。

对列的先进先出

技术图片

图中可以看出,如果队列中的值取完了,程序会在原地等待,直到从队列中拿到值才会停止,我们往队列放值的顺序是1,2,3,4,,,取出的时候仍然是1,2,3,4的顺序,所以是先进先出。

双端队列(deque):

技术图片

队列是不应该支持任意位置插值的,只能在首尾插值;但双端队列有些特殊,可以根据索引在任意位置用insert插值,下图是实例。

技术图片

有序字典(Odereddict):

使用dict是无序的,在对dict迭代时,我们无法确定key的顺序。如果要保持key的顺序,可以用OrderedDict。以下实例在Python2证明一下为何dict无序,而orderedict是有序字典。

技术图片

Defaultdict(默认字典,首字母要大写):

技术图片

技术图片

Counter(计数器,首字母要大写):counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。counter类和其他语言的bags或multisets很相似。

技术图片

time/datetime 调用方法:import time,import datetime

和时间有关的我们就要用到时间模块,在使用时,应该先导入这个模块。

常用方法:

1)time.time()获取当前时间戳 2)timesleep(secs) 让计算机休眠指定的时长,单位是秒

表示时间的三种方式:

(1)时间戳(Timestamp):时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,我们运行“type(time.time)”,返回的是float类型。

(2)格式化的时间字符串(Format String)’1999-08-14’

? Python 中时间日期格式化字符:

%y 两位数的年份表示(00-99) %Y四位数的年份表示(0000-9999) %m 月份(01-12)

%d 月内的某一天 %H 24小时制小时数(0-23) %I 12小时制小时数(01-12)

%M 分钟数(00=59)%S 秒(00-59) %p 本地A.M.或P.M.的等价符

(3)结构化时间(struct_time):struct_time元组共有9个元素:(年月日时分秒,一年中的第几周,一年中的第几天等)

三种时间之间的转换:

技术图片

时间字符串的拼接:

技术图片

Datetime:

技术图片

技术图片

技术图片

random(随机模块)

Import random

print(random.randint(1,6)) # 随机取一个你提供的整数范围内的数字 包含首尾

print(random.random()) #随机取0~1之间的小数

print(random.choice([1,2,3,4,5,6])) #摇号,随机从列表中取一个元素

res=[1,2,3,4,5,6]

random.shuffle(res) #洗牌

Print(res)

技术图片

生成随机验证码案例:

要求:验证码由大写字母、小写字母、数字组成,生成5位随机验证码。

运用的知识点:chr:将ASCII码表里面对应的十进制数字转换成对应的大小写字母。

技术图片

OS模块 (跟操作系统打交道的模块)

Import os

os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.path
os.path.abspath(path) 返回path规范化的绝对路径

os.path.split(path) 将path分割成目录和文件名二元组返回 
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
 

以下是常用的OS下的模块:listdir

listdir 可以获取指定文件夹下的全部文件的内容

技术图片

路径拼接

技术图片

os 和 sys 模块组合添加环境变量

技术图片

os模块下各个方法使用实例

技术图片技术图片技术图片

序列化模块

序列化:其他数据类型转换成字符串的过程; 反序列化:字符串转成其他数据类型

序列化目的:1、以某种存储形式使自定义对象持久化;2、将对象从一个地方传递到另一个地方。3、使程序更具维护性。

json 模块

所有的语言都支持json格式支持的数据类型很少,字符串,列表,字典, 整型 ,元组(转成列表),布尔值;

pickle模块(****)

? 只支持python ,python所有的数据类型都支持.

dumps:序列化 将其他数据类型转成json格式的字符串

loads:反序列化 将json格式的字符串转换成其他数据类型

json模块序列化字典和列表 用dumps 和 loads

技术图片

json序列化和反序列化 写、读文件用dump和load

技术图片

t=(1,2,3,4,5)

print(json.dumps(t))

序列化之后转成列表[1, 2, 3, 4, 5]

Pickle

技术图片

Pickle转码文件,直接将文件写成二进制,读的时候默认也是二进制形式,即‘rb’模式读取。

技术图片

以上是关于chao的主要内容,如果未能解决你的问题,请参考以下文章

GCPC2018 Kitchen Cable Chaos(动态规划)

【UE】Chaos破碎方案浅析

chaos-engineering 的一些开源工具

[Chaos] 混沌数学学习资料

[Chaos] 混沌数学学习资料

Flask-Login + Flask-Sockets = Chaos