简要介绍一下各种集合:
  列表、元组、字典、集合(含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. python实现语音信号处理常用度量方法

    信噪比(SNR) 有用信号功率与噪声功率的比(此处功率为平均功率),也等于幅度比的平方 $$SNR(dB)=10\log_{10}\frac{\sum_{n=0}^{N-1}s^2(n)}{\sum_ ...

  2. Java连载38-对象封装性格式、构造方法

    一.封装的步骤 (1)所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中进行访问. (2)对外提供简单的操作入口,也就是说以后外部程序要想访问age ...

  3. 关于 NuGet 本地仓库、.NET Core 引用等实战

  4. kali渗透综合靶机(六)--FristiLeaks靶机

    kali渗透综合靶机(六)--FristiLeaks靶机 靶机地址下载:https://download.vulnhub.com/fristileaks/FristiLeaks_1.3.ova 一.主 ...

  5. ElasticSearch简介(一)——基础

    基本概念 1.  Node 与 Cluster Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例. 单个 Elastic 实例称为一个节点 ...

  6. Docker(Linux)学习笔记以及Redis/MariaDB的容器使用后台全自动启动

    1:Docker安装,由于Docker后续pull镜像的服务器默认是在国外的,速度实在是太慢,这里使用阿里云的镜像 阿里云的Docker CE 镜像源站进行安装 docker ===========U ...

  7. .NET Core RabbitMQ探索(1)

    RabbitMQ可以被比作一个邮局,当你向邮局寄一封信时,邮局会保证将这封信送达你写的收件人,而RabbitMQ与邮局最主要的区别是,RabbitMQ并不真的处理信件,它处理的是二进制的数据块,它除了 ...

  8. 利用Chrome开发者工具功能进行网页整页截图的方法

    第一步:打开chrome开发者工具. 打开你想截图的网页,然后按下 F12(macOS 是 option + command + i)调出开发者工具,接着按「Ctrl + Shift + P」(mac ...

  9. 【maven】测试

    针对spring-boot项目 通过命令行执行mvn命令来启动测试模块. 1.引入plugin 并自定义参数ignore.test 2.命令行传递参数启动test mvn clean package ...

  10. Git 合并单个文件

    有两个分支 # git branch -a * branchA branchB remotes/origin/branchC A分支合并B分支单个文件 注意是本地分支,还是远程分支 # git che ...