简要介绍一下各种集合:
  列表、元组、字典、集合(含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. 【BZOJ3171】[TJOI2013] 循环格(网络流)

    点此看题面 大致题意: 给你一个循环格,每个格子有一个方向.问你至少修改多少格子,才能使从每个格子出发都能回到原格子. 建图 这是道网络流题目,主要就是考虑如何建图. 我们可以把每个点拆成两个点,一个 ...

  2. T-SQL(SQLSERVER)

    使用自定义类型名 CREATE DATABASE Student GO USE Student GO Exec sp_addtype char20,'varchar(20)','null' GO 在库 ...

  3. 解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果

    解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果 一.前言 最初还是在抖音上看到可以使用简单地代码实现炫酷的网页效果的,但是想要找到可以运行的代码还是比较困难的,最近突然想起就在 ...

  4. LeetCode 20:有效的括号 Valid Parentheses

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. Given a string containing just the characters '(', ' ...

  5. 【前端知识体系-JS相关】对移动端和Hybrid开发的理解?

    1.hybrid是什么,为何使用hybrid呢? 概念: hybrid就是前端和客户端的混合开发 需要前端开发人员和客户端开发人员配合完成 某些环节也可能会涉及到server端 大前端:网页.APP. ...

  6. java 金额数字转换大写算法

    根据人民币大写金额规范,转换有几点要注意的: 阿拉伯数字中间有"0"时,中文大写金额中间可以只写一个"零"字.如¥1,409.50,应写成人民币壹仟肆佰零玖圆伍 ...

  7. Django学习笔记(18)——BBS+Blog项目开发(2)主体思路及流程

    这篇博客主要完成一个BBS+Blog项目,那么主要是模仿博客园的博客思路,使用Django框架进行练习. 准备:项目需求分析 在做一个项目的时候,我们首先做的就是谈清楚项目需求,功能需求,然后才开始写 ...

  8. kali渗透综合靶机(十四)--g0rmint靶机

    kali渗透综合靶机(十四)--g0rmint靶机 靶机下载地址:https://www.vulnhub.com/entry/g0rmint-1,214/ 一.主机发现 1.netdiscover - ...

  9. Mysql、Oracle、SQLServer等数据库参考文档免费分享下载

    场景 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统 ...

  10. 高强度学习训练第二天总结:Opencv+Android+CameraView小demo

    前言:网上已经有很多人将Opencv集成进Android项目中了.因此我只给大家看Gradle文件和项目目录. 1.gradle 三个gradle script // Top-level build ...