简要介绍一下各种集合:
  列表、元组、字典、集合(含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)

最新文章

  1. Quartz2D之生成圆形头像、打水印、截图三种方法的封装
  2. ssh git免密码提交代码
  3. HTML基础(一)——一般标签、常用标签和表格
  4. 编写高质量JS代码的68个有效方法(七)
  5. 网上搜集的jq常用代码
  6. js动态生成JSON树
  7. nginx安装 nginx: [emerg] getpwnam(“www”) failed 错误
  8. java.util.Date转java.sql.Date丢失时间问题
  9. [Boost::Polygon]多边形相减得到新的多边形序列
  10. 类 的重载(Overloads)与隐藏(Shadows)
  11. WireShark抓包软件的使用
  12. The dplyr package has been updated with new data manipulation commands for filters, joins and set operations.(转)
  13. 开发一个成功APP的六个技巧
  14. PyCharm命令行输入
  15. 1、Jenkins的安装与简单配置
  16. Chapter5_初始化与清理_方法重载
  17. Codeforces.487C.Prefix Product Sequence(构造)
  18. Redis集合 安装 哨兵集群 配置
  19. [转贴]LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project
  20. P4574 [CQOI2013]二进制A+B

热门文章

  1. hdu6514 一维化 + 二维前缀和
  2. Redis与python
  3. Ubuntu 安装git及git命令
  4. jboss_log4j.xml配置
  5. vue中使用better-scroll的2种方式简述
  6. 一.OS运行机制
  7. 用Python完成毫秒级抢单,助你秒杀淘宝大单
  8. Ubuntu关机重启后 NVIDIA-SMI 命令不能使用
  9. ASP.NET Core 进程外(out-of-process)托管
  10. PIE SDK水体指数法