引入模块的方式:
1. import 模块
2. from xxx import 模块
collections模块
1.Counter 计数器
from collections import Counter s = 'apple pineapple' nb = Counter(s) #Counter({'p': 5, 'e': 3, 'a': 2, 'l': 2, ' ': 1, 'i': 1, 'n': 1})
2.deque 双向队列(栈.队列)
1)栈 : FILO.先进先出
2)队列 : FIFO.先进先出
栈Stack
class StackEmptyError(Exception): pass class StackFullError(Exception): pass class Stack: def __init__(self. size): self.top = 0 #栈顶指针 self.size = size self.lst = [] #存放数据的列表 def push(self): if self.top >= self.size: raise StackFullException('your stack is full') self.lst.insert(self.top, el) self.top +=1 def pop(self): if self.top == 0: raise StackEmptyException('your stack is empty') self.top-=1 el = self.lst[self.top] return el
queue模块
import queue q = queue.Queue() q.put('a') q.put('b') q.put('c') print(q) #<queue.Queue object at 0x01C49C10> print(q.get()) #a
deque
from collections import deque q = deque() q.append('a') #右侧添加 q.append('b') q.appendleft('c') #左侧添加 q.appendleft('d') print(q) #deque(['d', 'c', 'a', 'b']) q.pop() #deque(['d', 'c', 'a']) q.popleft() #deque(['c', 'a']) print(q.pop()) #a
namedtuple命名元组(相当于创建类)
from collections import namedtuple nt = namedtuple('point', ['x', 'y']) p = nt(1, 2) print(p) #point(x=1, y=2) print(p.x) #1
OrderedDict和defaultdict
字典的key默认是无序的.而OrderedDict是有序的(和普通字典操作一样,打印效果不同)
from collections import OrderedDict od = OrderedDict({'b' : 'boy','c' : 'carry', 'a' : 'apple'}) print(od) #OrderedDict([('b', 'boy'), ('c', 'carry'), ('a', 'apple')])
defaultdict: 可以给字典设置默认值.当key不存在时.直接获取默认值
from collections import defaultdict dd = defaultdict(list) print(dd['a']) #[]
time模块***
时间的三种形式:
1.时间戳(timestamp).从1970年01月01日00点00分00秒开始,使用float来表示
2.格式化时间(strftime).根据需要对时间进行任意格式化
3.结构化时间(struct_time).把时间分类划分
日期格式化的标准:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53) 星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53) 星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当地时区的名称
%% %号本身
时间戳
import time print(time.time()) #1546518703.0296843 系统时间
结构化时间
st = time.time() t = time.localtime(st) print(t) #time.struct_time(tm_year=2019, tm_mon=1, tm_mday=3, tm_hour=20, tm_min=58
, tm_sec=21, tm_wday=3, tm_yday=3, tm_isdst=0)
格式化时间
s = time.strftime('%Y-%m-%d %H:%M:%S',t) print(s) #2019-01-03 21:01:58
用户输入一个时间,转化为时间戳:
s1 ='2019-01-03 21:01:58' #输入的时间 t1 = time.strptime(s1, '%Y-%m-%d %H:%M:%S') #转化成结构时间 st1 = time.mktime(t1) #转换成时间戳 print(st1) #1546520518.0
random随机模块
import random random.random() #0-1小数 random.uniform(3, 10) #3-10小数 random.randint(1, 10) #1-10整数 random.randrange(1, 10, 2) #1-10奇数[1,10) random.choice(['a','b','c']) #选择一个 random.sample(['a','b','c'], 2) #列表列出任意两个组合 l = ['a', 'b', 'c'] random.shuffle(l) #列表随机打乱顺序
os模块
os.makedirs('dirname1/dirname2') #可生成多层递归目录 os.removedirs('dirname1') #若目录为空,则删除,并递归到上一级目录,如若为空,则删除,依此类推 os.mkdir('dirname') #生成单级目录 os.rmdir('dirname') #删除单级目录 os.listdir('dirname') #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() #删除一个文件 os.rename("oldname","newname") #重命名文件/目录 os.stat('path/filename') #获取文件/目录信息 os.system("bash command") #运行shell命令,直接显示 os.popen("bash command).read() #运行shell命令,获取执行结果 os.getcwd() #获取当前工作目录,即当前python脚本工作的目录 os.chdir("dirname") #改变当前脚本工作目录;相当于shell下cd
os.path.abspath(path) #返回规范化的绝对路径 os.path.split(path) # 将path分割成目录和文件名二元组返回 os.path.dirname(path) #返回path的目录 os.path.basename(path) #返回path最后的文件名 os.path.exists(path) #如果path存在,返回True 如果path不存在,返回False os.path.isabs(path) #如果path是绝对路径,返回True os.path.isfile(path) #如果path是一个存在的文件,返回True os.path.isdir(path) #如果path是一个存在的目录,则返回True os.path.join(path1[, path2[, ...]]) #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) #返回path所指向的文件或者目录的最后访问时间 os.path.getmtime(path) #返回path所指向的文件或者目录的最后修改时间 os.path.getsize(path) #返回path的大小
sys模块
sys.exit(n) #退出程序,正常退出时exit(0),错误退出时sys.exit(1)