一.collections,time时间,functools,random模块。
一.collections,time时间,functools,random模块.
(一)collections模块
1.Counter:一个计数器,主要用来计数.
low: s = "alex like pig" dic = {} for c in s: dic[c] = dic.get(c, 0) + 1 print(dic) nb: s = "alex like pig" print(Counter(s)) # 获取到的结果可以像字典一样进行使用 [key]
2.deque双向队列(具体内容详见day22.模块)
from collections import deque #创建双向队列,该模块创建的队列,在取值时,如果取空了,会报错. d = deque() # 创建双向队列 d.append("宝宝") # 在右侧添加 d.append("哈哈") d.appendleft("娃哈哈") # 在左边添加 d.appendleft("爽歪歪")print(d.pop()) # 从右边拿数据 print(d.pop()) # 从右边拿数据 print(d.popleft()) # 从左边拿数据 print(d.popleft()) # 从左边拿数据
import queue #创建队列,该模块创建的队列取值是如果取没了,不会报错. q = queue.Queue() q.put("李嘉诚") q.put("张师兄") print(q)
#打印结果:<queue.Queue object at 0x000001F77C1482E8> print(q.get()) print(q.get())
4.orderdict和defaultdict
5.namedtuple 命名元组
from collections import namedtuple nt = namedtuple("point",["x","y"]) #自己定义一个元组,其实就是创建一个小型的类 p = nt(1,2) print(p) print(p.x) print(p.y)
(二)time时间模块
时间有三种:
时间戳(time.time()): 时间戳使用的是从1970年年01月01日 00点00分00秒到现在一共经过了多少秒... 使用float来表示.
格式化时间(time.strftime()). 这个时间可以根据我们的需要对时间进行任意的格式化.
结构化时间(struct_time). 这个时间主要可以把时间进行分类划分. 比如. 1970 年01月01日 00点00分00秒 这个时间可以被细分为年, 月, 日.....一大堆东西.
,展现给客户需要转换
格式化时间:
import time s = time.strftime("%Y-%m-%d %H:%M:%S") # 此时间为现在系统的格式化时间. print(s)
输出结果为:
2018-12-27 07:30:19
结构化时间:
print(time.localtime()) 结果: time.struct_time(tm_year=2017, tm_mon=05, tm_mday=8, tm_hour=10, tm_min=24, tm_sec=42, tm_wday=0, tm_yday=126, tm_isdst=0)
格式化时间转换成时间戳时间
user_input = 2020-10-01 04:18:12 #格式化时间 # 格式化时间转化成结构化时间 time.strptime(字符串时间,格式) struct_time = time.strptime(user_input, "%Y-%m-%d %H:%M:%S") num = time.mktime(struct_time) # 转化成时间戳 print(num) #输出结果是一个数字
把时间戳时间,转换成格式化时间
a = 188888 t = time.localtime(a) # 结构化的本地东八区的时间 # t = time.gmtime(a) # 格林尼治时间 s = time.strftime("%Y-%m-%d %H:%M:%S", t)# 把一个结构化时间转化成格式化时间 print(s)
(三)functools模块
①wraps() #给装饰器中的inner改名字
from functools import wraps # 可以改变一个函数的名字, 注释... def wrapper(fn): @wraps(fn) # 把inner的名字改变成原来的func def inner(*args, **kwargs): print("前") ret = fn(*args, **kwargs) print("后") return ret return inner @wrapper # func = wrapper(func) def func(): print('哈哈哈') print(func.__name__) # func
②reduce #跟map相对的
reduce(function, iterable[, initializer]) 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
#map() 映射 print(list(map(lambda x:x**2,[i for i in range(10)]))) 输出结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] print(reduce(lambda x,y:x*y,[i for i in range(1,10)])) 输出结果:362880
3)partial() 偏函数(固定函数中某些参数的值)
from functools import partial def chi(zhushi, fushi): print(zhushi, fushi) chi2 = partial(chi, fushi="辣鸡爪") chi2("大米饭") chi2("小米饭") 打印结果为: 大米饭 辣鸡爪 小米饭 辣鸡爪
(四)randome模块 (关于随机的模块)
import random print(random.random) print(random.uniform(3,10)) #3-10的小数 print(random.randint(3,10)) #3-10的整数 print(random.randrange(1,10,2)) #1-10的奇数 print(random.choice([1,"周杰伦",["感伦,'胡辣汤"]])) #列表元素任意2个组合 print(random.sample(([1, '23', [4, 5]], 2)) ) # 1或者23或者[4,5]) lst = [1, 2, 3, 4, 5, 6, 7, 8] random.shuffle(lst) #随机打乱顺序 print(lst)
另外补充一个: round()函数,方法返回浮点数x的四舍五入值(不准确)。相关连接解释: http://www.runoob.com/w3cnote/python-round-func-note.html
如果距离两边一样远,会保留到偶数的一边。比如round(0.5)和round(-0.5)都会保留到0,而round(1.5)会保留到2.四舍五入前的数是奇数,是四舍五如;是偶数,则是五设六入
在用round()函数进行四舍五入时,如果你对结果有十足把握,并且这就是你想要的结果,那就放心大胆地使用。不然就老老实实写个函数来实现吧,这不是什么难事
(五)os模块(操作系统相关的模块)import os
os.makedirs('dirname1/dirname2') #可生成多层递归目录 os.removedirs('dirname1')#删除指定路径的空目录,一直删除到不为空的目录 os.mkdir('dirname1') #生成单级目录 os.rmdir('dirname1') #删除单级空目录,如果目录不为空则报错. os.listdir('dirname1') #列出指定目录下的所有文件和子目录,包括隐藏文件,列表形式返回 os.remove('dirname1') #删除一个文件,可以给绝对路径 os.rename('dirname1','dirname2')#从新命名 os.stat('path/filename') #获取文件/目录的信息 os.urandom(n) #随机生成n个字节字符串(函数返回的随机字节是根据不同的操作系统特定的随机函数资源。即,这个函数是调用OS内部自带的随机函数的。有特异性)
os.getcwd() #获取当前工作目录,即当前python脚本的工作目录路径 os.chdir("dirname") #改变当前脚本的工作目录. 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) #判断是否为绝对路径,返回值True/False os.path.isfile(path) #判断是否存在该文件,返回值True/False os.path.isdir(path) #判断是否存该目录,True/False os.path.join(path1,[path2,[...]])#讲多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getsize(path) #返回path的大小
(六)sys模块(解释器相关的模块)
import sys sys.version() #获取py解释器程序的版本信息 sys.path() #返回值是该模块的搜索路径,初始化时使用py环境变量的值