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)
posted @ 2019-08-10 17:13  玉石非玉  阅读(136)  评论(0编辑  收藏  举报