collections模块
1.collections
里面封装了一些扩展数据类型,例如queue,有序字典,尽管python3.6之后字典都变的有序了,namedtuple
2.nametuple
常用在封装一些只有属性没有方法的对象
from collections import namedtuple
#定义一个只有属性没有方法的类,Point类名就是一个变量名, "点"是类型 Point = namedtuple("点",("x","y"))
p1 = Point(1,2)
#__str__格式:typename("x"=self.x,"y"=self.y)
print(p1,type(p1))
#一副扑克牌
import random suits = ["红心","钻石","梅花","黑桃"] nums = [str(i) for i in range(2,11)]+list("JKQA") cards = [Card(suit,num) for suit in suits for num in nums]
#洗牌 random.shuffle(cards) print(cards) print("随机抽卡",random.choice(cards))
3.其他
#常见的就是系统里面的任务请求,忙的时候处理不过来,任务就会存放到队列当中,先进先出 #所以说,不同的数据结构是对不通逻辑的抽象,也可以视为一种逻辑约束 #先看队列 import queue q = queue.Queue() q.put(1) q.put(11) print(q)#得到一个对象,内部抽象就不允许看到队列的所有,只给了一个迭代器对象 print(q.get())#当队列空了,就会进入阻塞 print(q.get()) # print(q.get()) #dequeue双端队列:两段都可以存取 #双端队列可以insert,所以做得不专业 from collections import deque dequeue = deque()#可以创建时传#deque([1,2,3]) dequeue.append(1) #appendleft从头取 #pop从尾部取,popleft从头取 print(dequeue)#deque可以看到内部全部,反正封装的很混乱,不爽可以自己封装一下
看十遍不如自己写一遍!巩固基础,纵横开拓!

浙公网安备 33010602011771号