python19
''' 模块collections ''' from collections import namedtuple Point=namedtuple('point',['x','y']) p=Point(1,2) print(p.x) print(p.y) print(p)
queue模块
''' 队列 先进先出 ''' import queue q=queue.Queue() q.put(10) q.put(9) q.put(8) q.put(7) print(q.qsize()) print(q.get()) print(q.get()) print(q.get()) print(q.get())
''' 双端队列 先进先出 ''' from collections import deque dq=deque([1,2]) dq.append('a')#从后端放数据 dq.appendleft('b')#从前面放数据 dq.insert(2,4)#插入数据 print(dq) print(dq.pop())#从后端取数据 print(dq.popleft())#从前端取出数据
.time模块
''' time时间 ''' import time print(time.strftime("%Y-%m-%d %H:%M:%S")) print(time.localtime())
collections模块
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
''' ''' from collections import namedtuple Point=namedtuple('Point',['x','y']) p=Point(1,2) print(p.x) print(p.y) print(p) ''' 结果 1 2 Point(x=1, y=2) '''
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
''' collections模块 双端队列,两头都可以进出 中间也可以插入 ''' from collections import deque q=deque(['a','b','c']) print(q) q.append('x') print(q) q.appendleft('y') print(q) #在下标为1处插入't' q.insert(1,'t') print(q) ''' 结果: deque(['a', 'b', 'c']) deque(['a', 'b', 'c', 'x']) deque(['y', 'a', 'b', 'c', 'x']) deque(['y', 't', 'a', 'b', 'c', 'x']) '''
3.Counter: 计数器,主要用来计数
''' Counter 计数器模块 ''' from collections import Counter c = Counter('abcdeabcdabcaba') print(c) ''' 结果: #Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}) '''
4.OrderedDict: 有序字典
''' collections模块 有序字典, 读取顺序按照插入的顺序返回 ''' from collections import OrderedDict d = dict([('a', 1), ('b', 2), ('c', 3)]) od = OrderedDict([('b', 2),('a', 1), ('c', 3)]) # OrderedDict的Key是有序的 OrderedDict([('a', 1), ('b', 2), ('c', 3)]) od = OrderedDict() od['z'] = 1 od['y'] = 2 od['x'] = 3 od.keys() # 按照插入的Key的顺序返回 print(od.keys()) ''' 结果: odict_keys(['z', 'y', 'x']) '''
''' 有如下值集合 [11,22,33,44,55,66,77,88,99,90...], 将所有大于 66 的值保存至字典的第一个key中, 将小于 66 的值保存至第二个key的值中。 ''' values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = {} for value in values: if value>66: if my_dict.get('k1'): my_dict['k1'].append(value) else: my_dict['k1'] = [value] else: if my_dict.get('k2'): my_dict['k2'].append(value) else: my_dict['k2'] = [value] print(my_dict) ''' 结果: {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]} '''
5.defaultdict: 带有默认值的字典
''' defaultdict字典解决方法 ''' from collections import defaultdict values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) for value in values: if value>66: my_dict['k1'].append(value) else: my_dict['k2'].append(value) print(my_dict) ''' 结果: defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]}) '''
time模块
''' time时间 时间的三种形式,时间戳,元组(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 当前时区的名称 %% %号本身 python中时间日期格式化符号: ''' import time #时间戳 print(time.time()) #时间字符串 print(time.strftime("%Y-%m-%d %X")) print(time.strftime("%Y-%m-%d %H-%M-%S")) #时间元组:localtime将一个时间戳转换为当前时区的struct_time print(time.localtime())
random随机数模块
''' 随机数 ''' import random #随机小数 print(random.random()) # 大于0且小于1之间的小数 #0.7664338663654585 print(random.uniform(1,3)) #大于1小于3的小数 #1.6270147180533838 #随机整数 print(random.randint(1,5)) # 大于等于1且小于等于5之间的整数 print(random.randrange(1,10,2)) # 大于等于1且小于10之间的奇数 #随机选择一个返回 print(random.choice([1,'23',[4,5]])) # #1或者23或者[4,5] #随机选择多个返回,返回的个数为函数的第二个参数 print(random.sample([1,'23',[4,5]],2)) # #列表元素任意2个组合 #[[4, 5], '23'] #打乱列表顺序 item=[1,3,5,7,9] print(random.shuffle(item)) # 打乱次序 #[5, 1, 3, 7, 9] print(random.shuffle(item)) #[5, 9, 7, 1, 3]
''' 生成随机验证码 ''' import random def v_code(): code = '' for i in range(5): num=random.randint(0,9) alf=chr(random.randint(65,90)) add=random.choice([num,alf]) code="".join([code,str(add)]) return code print(v_code())
os模块
os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 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.system("bash command") 运行shell命令,直接显示 os.popen("bash command).read() 运行shell命令,获取执行结果 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的大小
sys模块
''' sys模块 ''' import sys print(sys.platform) print(sys.version) print(sys.argv)