collections模块
一、定义
# collections模块 python中的扩展数据类型 # 起名时不能起和模块相投的模块,因为模块本质就是python文件 # 列表,元组 # 字符串 # 集合(frozen set) # 字典 # 堆栈(先进后出)(没有这种数据类型) # 队列(先进先出)(有单独数据类型)(FIFO)
二、方法
1.namedtuple,元组命名
#namedtuple #namedtuple('名称','[变量组]') from collections import namedtuple Point=namedtuple('point',['x','y']) #前面的point取名无关,后面的列表中就是有几个元素,可以加z之类的 p=Point(1,2) p2=Point(2,1) print(p.x) print(p.y) print(p) print(p2) # 1 # 2 # point(x=1, y=2) # point(x=2, y=1)
举例:扑克花色
#花色 Card=namedtuple('card',['suits','number']) C1=Card('红心',2) print(C1.number)
2.Queue 队列
#队列 import queue q=queue.Queue() q.put(10) #放入值可以是其他数据类型,一次只能放一个值 q.put(5) q.put(4) print(q) #一个队列类型的内存地址 print(q.get()) print(q.get()) print(q.get()) #顺序10,5,4 # print(q.get()) #阻塞,整个程序停住,直到再在队列中放入一个值 print(q.qsize()) #返回3 #不能循环,只能放入值,取值,查大小
3.deque
#双端队列 #可以插队,Insert方法 from collections import deque deq=deque(['de','me']) deq.append('c2') #从后面放数据 deq.appendleft('cl') #从前面放数据 print(deq) deq.insert(1,3) #在1这个位置插入3,会取代以及定义的 print(deq.pop()) #取后面的c2 # deq.pop() #从后面取 # deq.popleft() #从前面取 print(deq) #deque([3, 'de'])
4.OrderDict
#orderdict 没有索引,但是有序,循环也依旧可以用 from collections import OrderedDict od=OrderedDict([('a',1),('b',2)]) print(od) print(od['a']) # OrderedDict([('a', 1), ('b', 2)]) # 1
5.defaultdict
#defaultdict # 给一个空字典,先创建defaultdict,所有value可以自定义默认类型(callable) from collections import defaultdict d=defaultdict(lambda:5) #要是callable,所以不能直接写值,就用匿名函数 print(d['k'])
6.counter 计算字符串中每个字符个数
#counter from collections import Counter c=Counter('arwarfdhtgfa') print(c) # Counter({'a': 3, 'r': 2, 'f': 2, 'w': 1, 'd': 1, 'h': 1, 't': 1, 'g': 1})
collections模块 python中的扩展数据类型
起名时不能起和模块相投的模块,因为模块本质就是python文件
列表,元组
字符串
集合(frozen set)
字典
堆栈(先进后出)(没有这种数据类型)
队列(先进先出)(有单独数据类型)(FIFO)