第二十一天- 基本模块
# 模块:模块就是我们把装有特定功能的代码进⾏归类的结果# 目前写的所有的py⽂件都是模块 # 引入方式:# 1.import 模块# 2.from xxx import 模块# 目前都是用的python内置模块 后面高级框架时需要额外安装第三方模块
# collections模块:# 1.Counter 计数器 计数
1 from collections import Counter 2 3 s = "狗咬我一口,难道我还要去咬狗?" 4 # dic = {} 5 # for el in s: 6 # dic[el] = dic.setdefault(el,0) + 1 7 # print(dic) 8 9 c = Counter(s) # 获取到的结果可像字典一样使用 10 # print("__iter__"in dir(c)) 11 print(c) 12 # for k in c: 13 # print(k, c[k])
# 2.双向队列# 数据结构: 栈 先进后出 队列 先进先出
![](/assets/blank.gif)
![](/assets/blank.gif)
1 # python中提供了列队 没有栈 自己写一个栈 2 class StackFullError(Exception): 3 pass 4 class StackEmptyError(Exception): 5 pass 6 7 class Stack: 8 def __init__(self, size): 9 self.index = 0 # 栈顶指针 10 self.lst = [] 11 self.size = size 12 13 # 给栈添加元素 14 def push(self, item): 15 if self.index == self.size: 16 # 栈已经满了. 不能再装东西了 17 raise StackFullError('the stack is full') 18 self.lst.insert(self.index, item) # 对于空列表. 需要insert插入内容 19 # self.lst[self.index] = item # 把元素放到栈里 20 self.index += 1 # 栈顶指针向上移动 21 22 # 从栈中获取数据 23 def pop(self): 24 if self.index == 0: 25 raise StackEmptyError("the stack is empty") 26 self.index -=1 # 指针向下移动 27 item = self.lst.pop(self.index) # 获取元素. 删除. 28 return item 29 30 # s = Stack(5) 31 # s.push("馒头1号") 32 # s.push("馒头2号") 33 # s.push("馒头3号") 34 # s.push("馒头4号") 35 # s.push("馒头5号") 36 # 37 # print(s.pop()) 38 # print(s.pop()) 39 # print(s.pop()) 40 # print(s.pop()) 41 # print(s.pop()) 42 # 43 # 44 # lst = [] 45 # lst.append("哈哈1") 46 # lst.append("哈哈2") 47 # lst.append("哈哈3") 48 # lst.append("哈哈4") 49 # 50 # print(lst.pop()) 51 # print(lst.pop()) 52 # print(lst.pop()) 53 # print(lst.pop())
View Code
# 队列 先进先出# python提供了queue模块. 直接用
![](/assets/blank.gif)
![](/assets/blank.gif)
1 import queue 2 3 q = queue.Queue() 4 q.put("林俊杰") 5 q.put("王力宏") 6 q.put("周杰伦") 7 q.put("陈道明") 8 9 # print(q.get()) 10 # print(q.get()) 11 # print(q.get()) 12 # print(q.get()) 13 # 14 # # print(q.get()) # 若队伍里没有元素了, 继续获取 会阻塞 15 # input() # 也会阻塞 输入等待 enter就能结束 16 # print("没有了。。。")
View Code
# deque 注意,此列队是collection中的
1 from collections import deque 2 3 q = deque() 4 5 q.append("刘亦菲") 6 q.append("江疏影") 7 q.appendleft("杨幂") 8 q.appendleft("胡歌") 9 10 # print(q.pop()) # 从右边拿 11 # print(q.pop()) 12 # print(q.popleft()) # 从左边拿 13 # print(q.popleft()) 14 15 # print(q.pop()) # 若队伍里没有元素了 会报错
# 3.namedtuple 命名元祖
1 from collections import namedtuple 2 3 point = namedtuple("点",["x","y","z"]) # 等同一个只有属性的类 4 # class point: 5 # def __init__(self,x,y,z): 6 # self.x = x 7 # self.y = y 8 # self.z = z 9 10 p = point(5,6,7) 11 print(p.x) 12 print(p.y) 13 print(p.z) 14 15 print(p) 16 p.x = 21 # 报错 不可改 终归是一个元祖
# 4.defaultdict# 可以给字典设置默认值. 当key不存在时. 直接获取默认值:
1 from collections import defaultdict 2 3 lst = [11,22,33,44,55,66] 4 d = defaultdict(list) 5 for el in lst: 6 if el <22: 7 d['key1'].append(el) # key1默认是不存在的. 但是可以拿key1. 一个空列表. 8 else: 9 d["key2"].append(el) 10 11 print(d)
# 5.orderdict# orderdict 字典默认无序 OrderedDict是有序的
1 dic = {'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'} 2 print(dic) 3 from collections import OrderedDict 4 od = OrderedDict({'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'}) 5 print(od)
# 时间模块# 获取当前系统时间, 时间戳# print(time.time()) # 1542166230.6139991, 给机器看的, 以1970-01-01 00:00:00为起点
# 格式化时间
1 import time 2 # 获取当前时间 3 s = time.strftime("%Y-%m-%d %H:%M:%S") 4 print(s) # 2018-11-14 11:47:29
# 应用-计时器
1 time.sleep(5) # 睡 到点起床 类似的 wait() -> notify() 2 3 while 1: 4 s = time.strftime("%Y-%m-%d %H:%M:%S") 5 print(s) 6 time.sleep(1)
# 时间戳 -> 格式化时间
1 import time 2 t = time.localtime(31999999999) # localtime 本地时间 gmtime() 格林尼治时间 时差 3 print(t) 4 str_time = time.strftime("%Y-%m-%d %H:%M:%S",t) 5 print(str_time)
# 格式化时间 -> 时间戳
1 s = "2984-01-15 16:53:19" 2 # 先结构化时间 3 t = time.strptime(s,"%Y-%m-%d %H:%M:%S") # 注意:要转化的格式是什么 结构化时就是什么 4 print(t) 5 ss = time.mktime(t) 6 print(ss)
# 注:结构化时间实际上就是一个命名元祖 如:
1 t = time.localtime() 2 # print(t) # time.struct_time(tm_year=2018, tm_mon=11, tm_mday=14, tm_hour=20, tm_min=46, tm_sec=45, tm_wday=2, tm_yday=318, tm_isdst=0) 3 # 实际在程序里是(2018, 11, 14, 20, 46, 45, 2, 318, 0)
# 时间差计算
![](/assets/blank.gif)
![](/assets/blank.gif)
1 import time 2 3 time_now = time.strptime("2018-11-14 15:07:08","%Y-%m-%d %H:%M:%S") 4 time_old = time.strptime("2017-12-25 18:07:22","%Y-%m-%d %H:%M:%S") 5 diff_cha = time.mktime(time_now) - time.mktime(time_old) # 先转换成时间戳 6 # 方案一 7 re = time.gmtime(diff_cha) # 结构化时间 8 re1 = time.strftime("%Y-%m-%d %H:%M:%S",re) # 格式化时间 9 # 注意默认时间1970-01-01,要减去。 10 print("相差%s年%s月%s天%s小时%s分钟%s秒"%(re.tm_year - 1970,re.tm_mon - 1,re.tm_mday - 1,re.tm_hour,re.tm_min,re.tm_sec)) 11 12 # 方案二 13 diff_min = int(diff_cha//60) # 转化成分 14 # print(diff_min) 15 diff_hour = int(diff_min // 60) # 转换成小时 16 # print(diff_hour) 17 diff_day = int(diff_hour // 24) # 转换成天 18 # print(diff_day) 19 20 diff_sec = int(diff_cha % 60) 21 # print(diff_sec) # 剩下的秒 46 22 23 diff_min1 = diff_min % 60 24 # print(diff_min1) # 剩下的分 59 25 26 diff_hour1 = diff_hour % 24 27 # print(diff_hour1) # 剩下的小时 20 28 29 print("时间差是%s天%s小时%s分%s秒"%(diff_day,diff_hour1,diff_min1,diff_sec))
View Code
# random模块
1 import random 2 3 print(random.random()) # (0,1)之间的随机小数 4 print(random.randint(1,10)) # [1,10] 闭区间 随机整数 5 print(random.uniform(3,10)) # (3,10)之间的随机小数 6 7 print(random.randrange(1,10,2)) # [1,10) 切片 随机每两个取一个 8 9 print(random.choice([1,'李荣浩','周杰伦',['胡辣汤','疙瘩汤']])) # 随机取一个 10 print(random.sample([1,'23',[4,5]],2)) # 列表元素任意两个组合 11 12 lst = [1,2,3,4,5,6,7,8,9] 13 random.shuffle(lst) # 随机打乱顺序 14 print(lst)
# os模块# 和系统操作相关的内容
![](/assets/blank.gif)
![](/assets/blank.gif)
1 import os 2 3 os.makedirs('dirname1/dirname2') # 创建文件夹目录结构 4 os.removedirs('哈啊哈') # 删除文件夹,如果文件夹内没有东西,可以删除,否则报错 5 6 os.mkdir('dirname/哈哈') # 生成单级目录 若父级目录不存在会报错 7 os.rmdir('dirname') # 删除单级文件夹 若不是空的 报错 inError 145] 目录不是空的。: 'dirname' 8 9 print(os.listdir('../')) # 递归 列出指定⽬录下的所有⽂件和⼦⽬录,包括隐藏⽂件,并以列表⽅式打印 10 11 os.remove('xxx') # 删除一个文件 12 os.rename('oldname','newname') # 重命名文件/目录 13 14 15 os.stat('dirname') # 获取文件信息 linux常用 16 # stat() 属性解读 17 # stat 结构: 18 # st_mode: inode 保护模式 19 # st_ino: inode 节点号。 20 # st_dev: inode 驻留的设备。 21 # st_nlink: inode 的链接数。 22 # st_uid: 所有者的⽤户ID。 23 # st_gid: 所有者的组ID。 24 # st_size: 普通⽂件以字节为单位的⼤⼩;包含等待某些特殊⽂件的数据。 25 # st_atime: 上次访问的时间。 26 # st_mtime: 最后⼀次修改的时间。 27 # st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在 28 # 其它系统上(如Windows)是创建时间。
View Code
![](/assets/blank.gif)
![](/assets/blank.gif)
1 import os 2 3 # os.system("dir") # 模拟命令行 直接执行命令 4 # s = os.popen('dir').read() # 运⾏shell命令,获取执⾏结果 5 # print(s) 6 7 # print(os.getcwd()) # 获取当前程序的目录 8 # os.chdir() # 更改程序工作目录 相当于 linux cd
View Code
# path相关
![](/assets/blank.gif)
![](/assets/blank.gif)
1 # path相关 2 import os 3 print(os.path.abspath('dirname')) # 获取绝对路径 4 print(os.path.split('E:\Python_workspace\day021- 基本模块1\dirname')) # 拆分路径 5 print(os.path.dirname('E:\Python_workspace\day021- 基本模块1\dirname')) # 返回上面拆分的第一个元素 6 print(os.path.basename('E:\Python_workspace\day021- 基本模块1\dirname')) # 即返回上面拆分第二个元素 7 8 print(os.path.exists('E:\Python_workspace\day021- 基本模块1\dirname')) # 看文件是否存在 存在True 不存在 False 9 print(os.path.isabs('xxx')) # 判断是否是绝对路径 10 11 print(os.path.isfile('xxx')) # 判断是否文件 12 print(os.path.isdir('xxx')) # 判断是否文件夹 13 14 print(os.path.join('path1[, path2[, ...]]')) # 拼接路径 15 print(os.path.getatime('xxx')) # 文件或目录最后访问时间 16 print(os.path.getmtime('xxx')) # 文件或目录最后修改时间 17 print(os.path.getsize('xxx')) # 返回 xxx 的大小
View Code
# 特殊属性
1 print(os.sep) # 文件分隔符 \\ / windows \\ linux / (重要) 2 print('c:'+os.sep+'王尼玛') # 这样写多平台可用 3 # 4 # os.linesep # 输出当前平台使⽤的⾏终⽌符,win下为"\r\n",Linux下为"\n" 5 # os.pathsep # 输出⽤于分割⽂件路径的字符串 win下为; ,Linux下为: (陪环境变量时用到) 6 7 print(os.name) # 输出字符串指示当前使⽤平台。win->'nt'; Linux->'posix' 判断用户使用系统
# sys模块# 所有和python解释器相关的都在sys模块
1 import sys 2 3 print(sys.argv) # 命令⾏参数List,第⼀个元素是程序本身路径(不常用) 4 5 # sys.exit(0) # 退出 类似 exit() 0正常退出 非0不正常 6 print(sys.version) # 获取Python解释器版本详细信息 7 print(sys.platform) # 返回操作系统平台名称 8 9 10 print(sys.path) # 搜索模块的路径 11 # sys.path.append("E:/") # 若master不在sys的搜索路径里可 .append('路径') 添加到sys 一样可调用 12 import master # master文件放在同目录 是sys.path搜索的第一个元素 所有可调用 13 master.chi() # 胖虎很能吃
转载于:https://www.cnblogs.com/xi1419/p/9960821.html
第二十一天- 基本模块相关推荐
- py0_二十一天计划书(前言以及本计划书)
################################################## 目录 Python 小白的二十一天学习挑战赛 Python 活动简介 创作计划 学习计划 学习日 ...
- Python自学第二十一天——飞机大战项目实践(四)
作为新手自学Python的第二十一天,技术低微,希望可以通过这种方式督促自己学习. 个人学习环境:python3.9,PyCharm 2021.3.2 (Community Edition) 利用py ...
- 偷学Python第三十一天:Python正则表达式的语法以及re模块的使用
偷学Python第三十一天:Python正则表达式的语法以及re模块的使用 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志.--苏轼 文章目录 偷学Python第三十一天:Python正则表达式的语 ...
- etcd 笔记(05)— etcd 代码结构、各模块功能、整体架构、各模块之间的交互、请求和应答流程
1. etcd 项目结构和功能 etcd 项目代码的目录结构如下: $ tree ├── auth ├── build ├── client ├── clientv3 ├── contrib ├── ...
- OpenCV 笔记(01)— OpenCV 概念、整体架构、各模块主要功能
1. OpenCV 概念 图像处理( Image Processing )是用计算机对图像进行分析, 以达到所需结果的技术, 又称影像处理. 图像处理技术一般包括图像压缩, 增强和复原, 匹配.描述和 ...
- Python 多线程总结(1)- thread 模块
thread 模块 1. 单线程 首先看下单线程程序运行的例子,如下所示, import timedef loop0():print 'start loop0 begin', time.ctime() ...
- 关于python导入模块和package的一些深度思考
背景 在python中有导入模块和导入package一说,这篇文章主要介绍导入模块和package的一些思考. 首先什么是模块?什么是package? 模块:用来从逻辑上组织python代码(变量,函 ...
- Python Re 模块超全解读!详细
内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...
- python性能分析之line_profiler模块-耗时,效率 时间
20210203 直接用pycharm 自带的 20201215 直接装不上的情况下 先下载安装文件 再安装 line_profiler使用装饰器(@profile)标记需要调试的函数.用kernpr ...
最新文章
- 百度也出分享(百度分享)
- 信息系统项目管理师考试时间安排
- ComponentBase.createMetaData and manifest.json oRoute
- 分类算法——决策树(1)
- 找出一个字符串中出现次数最多的字_Day34:第一个只出现一次的字符
- PAT真题乙类1006 换个格式输出整数
- endnote如何添加网页类参考文献
- RocketMQ源码解析-Producer启动
- 因为10万元 乐视云计算又把自己折腾成失信被执行人...
- Python监视用户计算机桌面窗口焦点的变化情况
- js 中exec、test、match、search、replace、split用法
- js 打印出来的节点多了m_前端实用技术分享—用Vue实现打印指定区域
- IMapGrid/IIndexGrid/IMesureGrid使用方法及MapGridBorder的使用
- MongoDB学习(黑马教程)-4-数据库MongoDB的更新(修改)文档操作
- ADS学习:谐波分析和参数扫描
- 微信域名防封、域名检测接口api、域名跳转技术、360防拦截揭秘(二)------传统防封的弊端
- 判断Iphone,Ipad当前网络状态
- uniapp启动微信小程序报错---initialize
- 长沙 22 岁女子长期过量喝奶茶进ICU,血糖值过高,血液呈乳白色几乎变「甜饮」,奶茶喝多少会有危险?
- JavaScript模拟实现先进先出、先进后出效果
热门文章
- Self-Supervised Learning (ELMO, BERT, GPT, Auto-encoder)
- Android权限操作之uses-permission详解
- ParagraphStyle(name=TitleStyle, fontName=hei, fontSize=48, alignment=TA_LEFT)这个实例化,如何在Paragraph中...
- Hanselminutes播客266-开源vs.赚钱vs.离奇的激光器-我们都邪恶吗? 与克里斯·塞尔斯(Chris Sells)...
- 《云阅2.0》一款同时看玩安卓和干货集中营资讯的App
- Linux学习-快捷键、关机
- 高纳德( Knuth)随机置乱算法,洗牌算法,等概率打乱顺序
- 谷歌浏览器修复_微软已经在Edge里解决谷歌浏览器让人讨厌的细节错误
- 神奇英语语法系列(五)——时态
- C#指定时区时间转为本地时间