一 deque
使用deque在队列两端添加(append)或弹出(pop)元素的算法复杂度大约是O(1),但是对于list对象改变列表长度和数据位置的操作例如 pop(0)和insert(0, v)操作的复杂度高达O(n)。
# iterable和maxlen可以没有
deque(iterable, maxlen)
1.双端队列
- ⑴ append 右添加
- ⑵ appendleft 左添加
- ⑶ pop 右移除
- ⑷ popleft 左移除
2.使用方式
from collections import deque
test = deque([1,2,3],2)
print(test)
test2 = deque([1,2,3])
print(test2)
test3 = deque()
test3.append(1)
test3.append(2)
print(test3)
test3.appendleft(0)
print(test3)
test3.pop()
print(test3)
test3.popleft()
print(test3)
输出:
deque([2, 3], maxlen=2)
deque([1, 2, 3])
deque([1, 2])
deque([0, 1, 2])
deque([0, 1])
deque([1])
二 Counter
Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。
1. 创建
>>> c = Counter() # 创建一个空的Counter类
>>> c = Counter('gallahad') # 从一个可iterable对象(list、tuple、dict、字符串等)创建
>>> c = Counter({'a': 4, 'b': 2}) # 从一个字典对象创建
>>> c = Counter(a=4, b=2) # 从一组键值对创建
2.计数值的访问与缺失的键
>>> c = Counter("abcdefgab")
>>> c["a"]
2
>>> c["c"]
1
>>> c["h"]
0