Collections
Collections:
1,namedtuple 生成可以使用名字来访问元素内容的tuple
>>> Point = namedtuple('point',['x','y','z'])
>>> p1 = Point(1,2,3)
>>> p1
point(x=1, y=2, z=3)
>>> p2 = Point(4,5,6)
>>> p2
point(x=4, y=5, z=6)
>>> p1.x
1
>>> p2.y
5
2,deque 双端队列,高效实现插入和删除操作的双向列表,适用于队列和栈
先看队列:
queue: 队列,先进先出
put() 往队列放值
get() 从队列中取值
qsize() 获取队列的长度
>>> import queue
>>> q = queue.Queue()
>>> q.put(1)
>>> q.put(2)
>>> q.put(3)
>>
>>> q
<queue.Queue object at 0x0000019A30A583A0> 内存地址
>>> q.get()
1
>>> q.get()
2
>>> q.get()
3
>> q.get() #当取到最后一个的时候,会阻塞队列,程序一直运行无法结束
再看双端队列
>>> from collections import deque
>>> dq = deque([1,2]) 新建一个双端队列
>>> dq
deque([1, 2])
>>> dq.append(3) 从后面增加数据
>>> dq
deque([1, 2, 3])
>>> dq.appendleft(4) 从前面增加数据
>>> dq
deque([4, 1, 2, 3])
>>> dq.pop() 从后面取数据,且取了就没有了
3
>>> dq
eque([4, 1, 2])
>>> dq.popleft() 从前面取数据,且取了就没有了
4
>>> dq
eque([1, 2])
>>> dq.insert(1,3) 从指定位置添加数据,从1开始数
>>> dq
deque([1, 3, 2])
>>> dq.insert(2,4)
>>> dq
deque([1, 3, 4, 2])
3,ordereddict 有序字典,有序但没有索引
>>> od = OrderedDict([('a',1),('b',2),('c',3)]) 创建有序字典对象
>>> od
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> od['a']
1
>>> od['b'] 取 b 对应的值
2
>>> for i in od: 有序字典,可以for循环
print(i)
a
b
c
4,defaultdict 字典中没有对于的key时也能直接添加value值
from collections import defaultdict
>>> d_dict = defaultdict(list) defaultdict(a) a必须是一个可被调用的名称 比如 list, str , int等 ,如果想要是一个默认的值,比如5 ,可以使用 lambda : 5 ,让它成为可调用的
>>> d_dict['k1'].append(1)
>>> d_dcit
defaultdict(<class 'list'>, {'k1': [1]})
5,Counter , 计数功能
>>> from collections import Counter
>>> a = 'abbcccdddd'
>>> a
'abbcccdddd'
>>>
>>>
>>> c = Counter(a)
>>> c
Counter({'d': 4, 'c': 3, 'b': 2, 'a': 1})

浙公网安备 33010602011771号