collections模块
一. 各种数据类型
1.1 具名元组
1.先产生一个元组对象模板
point = namedtuple('坐标',['x','y'])
2.创建诸多元组数据
p1 = point(1,2)
p2 = point(10,8)
print(p1,p2) # 坐标(x=1, y=2) 坐标(x=10, y=8)
print(p1.x) # 1
print(p1.y) # 2
person = namedtuple('人物','name age gender')
p1 = person('jason',18,'male')
p2 = person('kevin',28,'female')
print(p1,p2) # 人物(name='jason', age=18, gender='male') 人物(name='kevin', age=28, gender='female')
print(p1.name,p1.age) # jason 18
"""具名元组的使用场景也非常的广泛 比如数学领域、娱乐领域等"""
card = namedtuple('扑克牌', ['花色', '点数'])
c1 = card('黑桃♠', 'A')
c2 = card('黑梅♣', 'K')
c3 = card('红心❤', 'A')
print(c1, c2, c3) # 扑克牌(花色='黑桃♠', 点数='A') 扑克牌(花色='黑梅♣', 点数='K') 扑克牌(花色='红心❤', 点数='A')
print(c1.点数) # A
1.2 双端队列
队列: 先进先出, 默认是只有一端只能进另外一端只能出
双端队列: 两端都可以进出
import queue
q = queue.Queue(3) # 最大只能放三个元素
# 存放元素
q.put(123)
q.put(321)
q.put(222)
q.put(444) # 如果队列满了 继续添加则原地等待
# 获取元素
print(q.get()) # 123
print(q.get()) # 321
print(q.get()) # 222
print(q.get()) # 如果队列空了 继续获取则原地等待
from collections import deque
q = deque([1,2,3])
print(q)
q.append(444) # 右边添加元素
print(q)
q.appendleft(666) # 左边添加元素
print(q)
q.pop() # 右边弹出元素
q.popleft() # 左边弹出元素
1.3 字典相关
正常的字典内部是无序的
# 无序字典
d1 = dict([('name','jason'),('pwd',123),('hobby','study')])
print(d1) # {'pwd': 123, 'name': 'jason', 'hobby': 'study'}
print(d1.keys())
# 有序字典
from collections import OrderedDict # 导入
d2 = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(d2)
d2['x'] = 111
d2['y'] = 222
d2['z'] = 333
print(d2)
print(d2.keys())