上海 day16 -- python 常用模块

目  录

  • collections模块

  • time 模块

  • random 模块

  • os 模块

  • sys 模块

  • 序列化模块

一、collections 模块

具名元组 namedtuple  : 给元组定义名字。

  namedtuple() 有两个参数,一个是定义的名字,另一个是元组内的变量名字必须是字符串或可迭代对象。

# 具名元组 : 将自己建造的元组进行命名
# 示例1 建造坐标
from collections import namedtuple
# namedtuple 括号内有两个参数,一个是自己起的元组名称,另一个可以是可迭代对象或字符串
point = namedtuple('基地坐标',['x','y'])  # 第二个参数是可迭代对象
res = point(1,2)
print(res)  # 基地坐标(x=1, y=2)
point1 = namedtuple('极地坐标','x y z')  # 第二个参数也可以是字符串,但要注意字符串之间要以空格隔开,不然会认为是一个字符
res2 = point1(3,4,5)
print(res2)   # 极地坐标(x=3, y=4, z=5)
# 示例2 扑克牌
from collections import namedtuple

point = namedtuple('黑桃K',"color number")
res = point('黑色桃型','K')
print(res)  # 黑桃K(color='黑色桃型', number='K')

双端队列 deque:

# 从collections 引出双端队列之前,先看一下队列:

# 队列:IFIO 先进先出原则
import queue
q = queue.Queue()  # 生成一个队列对象
q.put('xiao zhu')  # .put() 方法给队列添加元素
q.put('xiao lu')
q.put('xiao qin')
res = q.get()  # .get() 方法取值
res1 = q.get()
res2 = q.get()
res3 = q.get()
print(res,res1,res2)  # xiao zhu xiao lu xiao qin
print(res3)  # 如果队列中的值取完后,程序会一直运行并等待,直到取到值为止
"""
双端队列:deque  两端都可以进出
方法:append()  appendleft() pop() popleft()
"""
from collections import deque
q = deque(['w','e','r'])  # 直接deque方法生成双端队列
q.append('')
q.appendleft('')
print(q)  # deque(['猴', 'w', 'e', 'r', '猪'])
q.pop()
q.popleft()
print(q)  # deque(['w', 'e', 'r'])
# 队列一般是不支持在队内插值的,只能在首尾插值
# 但是双端队列比较特殊,可以在任意位置查入元素
q.insert(1,'诸侯死对头')
print(q)

有序字典:OrderedDict

"""
原生字典是无序的,打印出来的key值顺序是不固定的;
但是 OrderedDict 的key值是有序的,按照插入的顺序排列
"""

normal_dict = dict([('zhu',1),('lu',2),('qin',3)])
print(normal_dict)  # {'zhu': 1, 'lu': 2, 'qin': 3}

from collections import OrderedDict
dict = OrderedDict([('zhu',1),('lu',2),('qin',3)])
print(dict)  # OrderedDict([('zhu', 1), ('lu', 2), ('qin', 3)]) 返回一个对象

dict1 = OrderedDict()
# print(dict1)
# dict1['x'] = 1
# dict1['y'] = 2
# dict1['z'] = 3
# print(dict1)  # OrderedDict([('x', 1), ('y', 2), ('z', 3)])
# for i in dict1:
#     print(i,end=' ')  # x y z
dict1['x'] = 1
dict1['K'] = 666
dict1['y'] = 2
dict1['z'] = 3
print(dict1)  # OrderedDict([('x', 1), ('K', 666), ('y', 2), ('z', 3)])
for i in dict1:
    print(i,end=' ')  # x K y z 我们可以看出key的排列是有顺序的,是按照插入顺序排序

默认字典 defaultdict

# 默认字典 defaultdict

from collections import defaultdict

values = [11, 22, 33,44,55,66,77,88,99,90]

dict = defaultdict(list)  # 后续字典中新建的key值对应的value就是列表
#print(dict['wer'])  # []  新添加的key值‘wer’对应的value就是空列表
for i in values:
    if i > 66:
        dict['k1'].append(i)
    else:
        dict['k2'].append(i)
print(dict)
# defaultdict(<class 'list'>, {'wer': [], 'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]})

计数器 counter

# 计数器counter
# 需求:将s = 'abcdeabcdabcaba' 统计字符数量并写成字典形式
d = {}
for i in s:
    d[i] = 0
print(d)  # {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0}  可以完成去重
# 代码
from collections import Counter
s = 'abcdeabcdabcaba'
res = Counter(s)
print(res)  # Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})

二、time 模块

time模块里有三种表现形式:

  1、时间戳  time.time()

  2、格式化时间   time.strftime()

  3、结构化时间 time.localtime()

三、random 模块

四、os 模块

五、sys 模块

六、序列化模块

猜你喜欢

转载自www.cnblogs.com/qinsungui921112/p/11209269.html
今日推荐