简要介绍一下各种集合:
  列表、元组、字典、集合(含frozenset)、字符串、堆栈(如手枪弹夹:先进后出)、队列(如马克沁机枪的弹夹:先进先出)

1、collections

1)queue 队列介绍
如马克沁机枪的弹夹:先进先出,还如排队买票,先排的先买!
  
import queue
q = queue.Queue()
q.put([1, 2, 3])
q.put(4)
q.put(5)
print(q) # 队列是一个黑盒子,你看不到里面放着什么!
q.get() # 得到[1, 2, 3]
q.get() # 得到4
print(q.get()) #打印:5
q.get() # 停在这,除非有新的元素加入,否则一直停在这等待! --程序阻塞
2)命名元组
from collections import namedtuple
Point = namedtuple('point',['x', 'y', 'z'])
p1 = Point(22,11,33)
p2 = Point(2,11,2)
p3 = Point(5,2,5)
print(p1.x)
print(p3.z)
print(p1,p2,p3) #扑克牌中的花色和数字
Card = namedtuple('card', ['suits', 'num'])
c1 = Card('红桃', 'K')
c2 = Card('方块', 7)
c3 = Card('梅花', 2)
print(c1, c2)
print(c2.num)
3)deque双端队列 可从队列的两端操作,比队列快!
rom collections import deque
dq = deque([1,2])
dq.append('a') # 从后面放数据 [1,2,'a']
dq.appendleft('b') # 从前面放数据 ['b',1,2,'a']
dq.insert(2,3) #['b',1,3,2,'a']
print(dq.pop()) # 从后面取数据 a
print(dq.pop()) # 从后面取数据 2
print(dq.popleft()) # 从前面取数据 b
print(dq) # deque([1, 3])
4)有序字典 OrderedDict
from collections import OrderedDict
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od) # OrderedDict的Key是有序的
print(od['a'])
for k in od:
print(k)
5)默认字典
众所周知,在Python中如果访问字典中不存在的键,
会引发KeyError异常(JavaScript中如果对象中不存在某个属性,则返回undefined)。
但是有时候,字典中的每个键都存在默认值是非常方便的。
from collections import defaultdict

d = defaultdict(lambda : 5)
print(d['k']) # 不存在该key,所以返回默认的5 dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict1[2] = 'two'
print(dict1[1]) #
print(dict2[1]) # set()
print(dict3[1]) # ''
print(dict4[1]) # []

2、time模块

时间的三种表达方式
1)时间戳 —— float时间 : 计算机看的  t = time.time() 
2)格式化时间  —— 字符串: 给人看的
#strftime
print(time.strftime("%Y-%m-%d %a %H:%M:%S"))  #year month day HOUR MINUTE SECOND
print(time.strftime("%Y/%m/%d %H:%M:%S")) #year month day HOUR MINUTE SECOND
print(time.strftime("%m-%d %H:%M:%S")) #year month day HOUR MINUTE SECOND
print(time.strftime("%H:%M:%S")) #year month day HOUR MINUTE SECOND
print(time.strftime("%H:%M")) #year month day HOUR MINUTE SECOND
3)结构化时间  ——  元祖 :计算用的
truct_time = time.localtime()
print(struct_time)
print(struct_time.tm_year) 
4) 时间戳和结构化时间 各种转换
# (1)时间戳转结构化
 print(t)
print(time.localtime(3000000000))
print(time.gmtime(t))

 # (2)结构化转时间戳

print(time.mktime(time.localtime()))

 # (3)格式化转结构化

print(time.strptime('2000-12.31','%Y-%m.%d'))

  # (4)时间戳转格式化

print(time.strftime('%m/%d/%Y %H:%M:%S',time.localtime(3000000000)))

 

print(time.asctime()) #Wed Dec  4 22:09:08 2019

 

3、random模块

 # 1)产生随机整数的三种方法:
print(random.randint(1, 10)) # 随机生成[1,10]之间的整数
print(random.randrange(1, 10, 2)) # 随机生成[1,10)之间的奇数,最后一个参数2是步长 # 2)产生一个随机小数的两种方法:
print(random.random()) # 返回随机生成的一个实数,它在[0,1)范围内。
print(random.uniform(2, 4)) # 返回随机生成的一个实数,它在(2,4)范围内。 # 3)从序列中随机选取一个元素
random.choice([1, '', [4, 5]]) # #1或者23或者[4,5]
print(random.choice('tomorrow')) # 4)随机选择多个返回,返回的个数为函数的第二个参数
random.sample([1, '', [4, 5]], 2) # 列表元素任意2个组合 # 5)打乱列表顺序
item = [1, 3, 5, 7, 9]
random.shuffle(item)
print(item) # 6)综合实例:随机生成验证码
'''分析:
随机生成4个字符,包含A-Za-z0-9
字母考虑用ascii码:,这样都是数字,好随机生成:'''
import random
def create_4_verification_code():
'''
生成四位固定格式的验证码:字母+数字+字母+数字
:return: 验证码
'''
verification_code = '' verification_code += chr(random.randint(65, 90))
verification_code += str(random.randint(0, 9))
verification_code += chr(random.randint(97, 122))
verification_code += str(random.randint(0, 9)) return verification_code print(create_4_verification_code()) def v_code():
'''
随机生成四位包含数字、大小写英文字母的验证码
:return: 四位验证码
'''
code = ''
for i in range(4):
num = random.randint(0, 9)
alf = chr(random.randint(97, 122))
alf = chr(random.randint(65, 90)) if random.randint(1, 2) == 2 else alf
add = random.choice([num, alf])
code = ''.join([code, str(add)])
return code print(v_code())

4、os模块

是与操作系统交互的一个接口
 import os
# 1、os模块的属性
os.sep # 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep # 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
os.pathsep # 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name # 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
# 2、常见的方法介绍
# 1)目录相关
os.makedirs('dirname1/dirname2') # 可生成多层递归目录
os.removedirs('dirname1') # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') # 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') # 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') # 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.getcwd() # 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") # 改变当前脚本工作目录;相当于shell下cd
# 2)文件相关
os.remove()
os.rename("oldname","newname") # 重命名文件/目录
os.stat('path/filename') # 获取文件/目录信息
# 注意:os.stat('path/filename') 获取文件/目录信息 的结构说明
# stat 结构: # st_mode: inode 保护模式
# st_ino: inode 节点号。
# st_dev: inode 驻留的设备。
# st_nlink: inode 的链接数。
# st_uid: 所有者的用户ID。
# st_gid: 所有者的组ID。
# st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
# st_atime: 上次访问的时间。
# st_mtime: 最后一次修改的时间。
# st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。 # 3)路径相关 os.path
path = ''
path1 = ''
path2 = ''
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的大小 # 4)、其他
os.system("bash command") # 运行shell命令,直接显示
os.popen("bash command).read()") # 运行shell命令,获取执行结果

5、sys模块

 import sys
sys.argv #命令行参数List,第一个元素是程序本身路径
sys.exit(n) #退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version #获取Python解释程序的版本信息
sys.path #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform #返回操作系统平台名称 # 异常处理和status
try:
sys.exit(1)
except SystemExit as e:
print(e)

Python进阶-XI 常用模块之一:collections、time、random、os、sys的更多相关文章

  1. 常用模块之 time,datetime,random,os,sys

    time与datetime模块 先认识几个python中关于时间的名词: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“ty ...

  2. 21 模块(collections,time,random,os,sys)

    关于模块importfrom xxx import xxx2. Collections1. Counter 计数器2. 栈: 先进后出.队列:先进先出deque:双向队列3. defaultdict ...

  3. day19:常用模块(collections,time,random,os,sys)

    1,正则复习,re.S,这个在用的最多,re.M多行模式,这个主要改变^和$的行为,每一行都是新串开头,每个回车都是结尾.re.L 在Windows和linux里面对一些特殊字符有不一样的识别,re. ...

  4. 2019-7-18 collections,time,random,os,sys,序列化模块(json和pickle)应用

    一.collections模块 1.具名元组:namedtuple(生成可以使用名字来访问元素的tuple) 表示坐标点x为1  y为2的坐标 注意:第二个参数可以传可迭代对象,也可以传字符串,但是字 ...

  5. Python——常用模块(time/datetime, random, os, shutil, json/pickcle, collections, hashlib/hmac, contextlib)

    1.time/datetime 这两个模块是与时间相关的模块,Python中通常用三种方式表示时间: #时间戳(timestamp):表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. ...

  6. python之常见模块(time,datetime,random,os,sys,json,pickle)

    目录 time 为什么要有time模块,time模块有什么用?(自己总结) 1. 记录某一项操作的时间 2. 让某一块代码逻辑延迟执行 时间的形式 时间戳形式 格式化时间 结构化时间 时间转化 总结: ...

  7. python的常用模块之collections模块

    python的常用模块之collections模块 python全栈开发,模块,collections 认识模块 什么是模块?    常见的场景:一个模块就是一个包含了python定义和声明的文件,文 ...

  8. python进阶06 常用问题库(2)datetime模块 base64

    python进阶06 常用问题库(2)datetime模块 base64 一.datetime模块(时间) 1.datetime.time() t=datetime.time(20,43,30,1) ...

  9. python进阶05 常用问题库(1)json os os.path模块

    python进阶05 常用问题库(1)json os os.path模块 一.json模块(数据交互) web开发和爬虫开发都离不开数据交互,web开发是做网站后台的,要跟网站前端进行数据交互 1.什 ...

随机推荐

  1. Paper | A Pseudo-Blind Convolutional Neural Network for the Reduction of Compression Artifacts

    目录 非盲增强网络结构 训练目标 压缩系数预测子网络 网络结构 根据块QP判决结果得到帧QP预测结果 保持时序连续性 实验 发表在2019年TCSVT. 本文提出了一个兼具 预测压缩系数 和 非盲去压 ...

  2. Vue+Element UI 实现视频上传

    一.前言 项目中需要提供一个视频介绍,使用户能够快速.方便的了解如何使用产品以及注意事项. 前台使用Vue+Element UI中的el-upload组件实现视频上传及进度条展示,后台提供视频上传AP ...

  3. 第二十二节:Asp.Net Core中使用托管服务实现后台任务

    1. 说明 BackgroundService 是用于实现长时间运行的 IHostedService 的基类,使用程序集:Microsoft.Extensions.Hosting. 2. 实现方式 继 ...

  4. IDEA快速修复错误快捷键

    有的时候在IDEA中编写代码,会出现错误提示,比如需要处理异常 将光标移动到出错,也就是划红线的地方,行首会出现一个小灯泡,点击会出现图二,可以按照提示进行修复

  5. Spring源码系列 — Bean生命周期

    前言 上篇文章中介绍了Spring容器的扩展点,这个是在Bean的创建过程之前执行的逻辑.承接扩展点之后,就是Spring容器的另一个核心:Bean的生命周期过程.这个生命周期过程大致经历了一下的几个 ...

  6. virtualbox 配置记录

    virtualbox 网络模式 Host-only Internal Bridged NAT 之间的区别 host-only模式,host与vm一起在内部网络 Internal模式,仅vm在内部网络 ...

  7. C#使用splitContainer控件制作收缩展开面板

    C#使用splitContainer控件制作收缩展开面板 原创 2011年07月19日 17:18:02 标签: c# / object / 扩展 / 测试 15690         最近对Squi ...

  8. 如何down掉IB交换机口

    服务器上找到需down的网络:ip a 通过ib命令iblinkinfo找到对应交换机以及在ib交换机上对应端口号 登录IB交换机,并通过命令:config进入配置模式 通过命令:port进入端口配置 ...

  9. python3之利用字典和列表实现城市多级菜单

    利用字典和列表实现城市多级菜单 #coding:utf-8 #利用字典和列表实现城市多级菜单 addrIndex = {":"福建"} addrDict = {" ...

  10. Python【day 10】函数进阶-小结

    本节主要内容1.动态参数 *args **kwargs 形参:*args将多个位置参数聚合打包成元组 **kwargs将多个关键字参数聚合打包成字典 实参:*li1将列表进行解包打散成多个位置参数 * ...