""" deque 双端队列,可以快速的从另外一侧追加和推出对象,deque是一个双向链表, 针对list连续的数据结构插入和删除进行优化。它提供了两端都可以操作的序列, 这表示在序列的前后你都可以执行添加或删除操作。双向队列(deque)对象支持以下方法: """ from collections import deque """ 1、append() 添加 x 到右端。 """ d = deque('ghi') d.append('j') print(d) """ 2、appendleft() 添加 x 到左端。 """ d.appendleft('f') print(d) """ 3、clear() 移除所有元素,使其长度为0. """ d = deque('ghi') d.clear() print(d) """ 4、copy() 创建一份浅拷贝。 """ d = deque('xiaoweuge') y = d.copy() print(y) """ 5、count() 计算 deque 中元素等于 x 的个数。 """ d = deque('xiaoweuge-shuai') print(d.count('a')) """ 6、extend() 扩展deque的右侧,通过添加iterable参数中的元素。 """ a = deque('abc') b = deque('cd') a.extend(b) print(a) #与append 的区别 a = deque('abc') b = deque('cd') a.append(b) print(a) """ 7、extendleft() 扩展deque的左侧,通过添加iterable参数中的元素。注意,左添加时,在结果中iterable参数中的顺序将被反过来添加。 """ a = deque('abc') b = deque('cd') a.extendleft(b) print(a) """ 8、index() 返回 x 在 deque 中的位置(在索引 start 之后,索引 stop 之前)。 返回第一个匹配项,如果未找到则引发 ValueError。 """ d = deque('xiaoweuge') print(d.index('w')) """ 9、insert() 在位置 i 插入 x 。 如果插入会导致一个限长 deque 超出长度 maxlen 的话,就引发一个 IndexError。 """ a = deque('abc') a.insert(1, 'X') print(a) """ 10、pop() 移去并且返回一个元素,deque 最右侧的那一个。 如果没有元素的话,就引发一个 IndexError。 """ d = deque('abc') print(d.pop()) """ 11、popleft() 移去并且返回一个元素,deque 最左侧的那一个。 如果没有元素的话,就引发 IndexError。 """ d = deque('abc') print(d.popleft()) """ 12、remove(value) 移除找到的第一个 value。 如果没有的话就引发 ValueError。 """ a = deque('abca') a.remove('a') print(a) """ 13、reverse() 将deque逆序排列。返回 None 。 """ #逆序排列 d = deque('ghi') # 创建一个deque print(list(reversed(d))) """ 14、rotate(n=1) 向右循环移动 n 步。 如果 n 是负数,就向左循环。 如果deque不是空的,向右循环移动一步就等价于 d.appendleft(d.pop()) , 向左循环一步就等价于 d.append(d.popleft()) 。 """ # 向右边挤一挤 d = deque('ghijkl') d.rotate(1) print(d) # 向左边挤一挤 d.rotate(-1) print(d) #看一个更明显的 x = deque('12345') x.rotate() print(x) d = deque(['12',' av', 'cd']) d.rotate(1) print(d) """ 15、maxlen Deque的最大尺寸,如果没有限定的话就是 None 。 """ d=deque(maxlen=10) for i in range(20): d.append(i) print(d)