1、namedtuple
定义一个namedtuple:
namedtuple('数据类型名', [属性列表])
from collections import namedtuple Point = namedtuple('point', ['x', 'y', 'z']) p1 = Point(1, 2, 3) p2 = Point(3, 2, 1) print(p1.x) print(p1.y) print(p1.z) print(p1) print(p2) card = namedtuple('card', ['suits', 'number']) c1 = card('黑桃', 2) print(c1) print(c1.number) print((c1.suits))
2、队列
2.1 队列
import queue q = queue.Queue() # 可以指定队列最大长度 for x in range(30): q.put(x) print(q.get()) #当没有值得时候,阻塞等待 print(q.qsize()) print(q.get()) #当没有值得时候,阻塞等待 print(q.qsize()) print(q.get()) #当没有值得时候,阻塞等待 print(q.qsize()) print(q.get()) #当没有值得时候,阻塞等待 print(q.qsize())
队列调用Queue时,可以指定最大长度,超过最大长度,不报错,但是队列也使用不了
q.get()获取值,获取队列中的值,无值时阻塞等待
q.put()向队列中推送值
q.qsize()获取队列的长度
2.2 双端队列
from collections import deque q = deque([1,2]) print(q) q.append('a') q.append('b') print(q) q.insert(3,'c') print(q) print(q.pop()) print(q) print(q.popleft()) print(q)
q.append('a')最末尾追加元素
q.insert(3,'c') 在索引3的位置插入c,索引从0开始
q.pop 删除对尾撒上的值,并返回
q.popoleft 删除对头的值,并返回
3、有序字典
from collections import OrderedDict import random od = OrderedDict([('a',1),('b',2),('c',3)]) print(od)
有序字典的键值是固定顺序的
4、defaultdict
from collections import defaultdict # 设置默认值为列表[] d = defaultdict(list) print(d['k']) # 设置默认值为5 d = defaultdict(lambda :5) # 键值不存在返回5 print(d['k'])