python3 deque(双向队列)

创建双向队列

import collections
d = collections.deque()

append(往右边添加一个元素)

import collections
d = collections.deque()
d.append(1)
d.append(2)
print(d)

#输出:deque([1, 2])

appendleft(往左边添加一个元素)

import collections
d = collections.deque()
d.append(1)
d.appendleft(2)
print(d)

#输出:deque([2, 1])

clear(清空队列)

import collections
d = collections.deque()
d.append(1)
d.clear()
print(d)

#输出:deque([])

copy(浅拷贝)

import collections
d = collections.deque()
d.append(1)
new_d = d.copy()
print(new_d)

#输出:deque([1])

count(返回指定元素的出现次数)

import collections
d = collections.deque()
d.append(1)
d.append(1)
print(d.count(1))

#输出:2

extend(从队列右边扩展一个列表的元素)

import collections
d = collections.deque()
d.append(1)
d.extend([3,4,5])
print(d)

#输出:deque([1, 3, 4, 5])

extendleft(从队列左边扩展一个列表的元素)

import collections
d = collections.deque()
d.append(1)
d.extendleft([3,4,5])
print(d)
#
# #输出:deque([5, 4, 3, 1])

index(查找某个元素的索引位置)

import collections
d = collections.deque()
d.extend([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
print(d)
print(d.index(‘e‘))
print(d.index(‘c‘,0,3))  #指定查找区间

#输出:deque([‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘])
#     4
#     2

insert(在指定位置插入元素)

import collections
d = collections.deque()
d.extend([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
d.insert(2,‘z‘)
print(d)

#输出:deque([‘a‘, ‘b‘, ‘z‘, ‘c‘, ‘d‘, ‘e‘])

pop(获取最右边一个元素,并在队列中删除)

import collections
d = collections.deque()
d.extend([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
x = d.pop()
print(x,d)

#输出:e deque([‘a‘, ‘b‘, ‘c‘, ‘d‘])

popleft(获取最左边一个元素,并在队列中删除)

import collections
d = collections.deque()
d.extend([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
x = d.popleft()
print(x,d)

#输出:a deque([‘b‘, ‘c‘, ‘d‘, ‘e‘])

remove(删除指定元素)

import collections
d = collections.deque()
d.extend([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
d.remove(‘c‘)
print(d)

#输出:deque([‘a‘, ‘b‘, ‘d‘, ‘e‘])

reverse(队列反转)

import collections
d = collections.deque()
d.extend([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
d.reverse()
print(d)

#输出:deque([‘e‘, ‘d‘, ‘c‘, ‘b‘, ‘a‘])

rotate(把右边元素放到左边)

import collections
d = collections.deque()
d.extend([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
d.rotate(2)   #指定次数,默认1次
print(d)

#输出:deque([‘d‘, ‘e‘, ‘a‘, ‘b‘, ‘c‘])
时间: 2024-08-08 17:52:41

python3 deque(双向队列)的相关文章

STL之deque双向队列

deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,提供随机访问,deque在接口上和vector非常相似,下面列出deque的常用成员函数: Table 6.9. Constructors and Destructor of Deques Operation Effect deque<Elem> c Creates an empty deque without any elements deque<Elem> c1(c2) Creates a co

C++ Deque(双向队列)

  C++ Deque(双向队列)是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪.向deque 两端添加或删除元素的开销很小.它不需要重新分配空间,所以向末端增加元素比vector 更有效. 实际上,deque 是对vector 和list 优缺点的结合,它是处于两者之间的一种容器. Deque 的特点: (1) 随机访问方

STL系列之一 deque双向队列(转载)

deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓冲区用来保存deque中的数据.因此deque在随机访问和遍历数据会比vector慢.具体的deque实现可以参考<STL源码剖析>,当然此书中使用的SGI ST

deque双向队列

对于双向队列,与队列queue以及vector容器的区别就在于,名字不同,也就是它是双向的,可以从头开始操作,也可以从末尾开始操作. 双向队列的常用方法跟队列queue差不多: 头文件: #include<deque> 函数: 构造/析构 deque<int>q  构造一个空的双向队列 deque<int>q(q1)  构造q,并复制q1 deque<int>q(n)  创建deque,含有n个数据,数据均由缺省构造函数产生 deque<int>

STL --&gt; deque双向队列

deque简介 deque是双向开口的连续性存储空间.虽说是连续性存储空间,但这种连续性只是表面上的,实际上它的内存是动态分配的,它在堆上分配了一块一块的动态储存区,每一块动态存储去本身是连续的,deque自身的机制把这一块一块的存储区虚拟地连在一起. 它首次插入一个元素,默认会动态分配512字节空间,当这512字节空间用完后,它会再动态分配自己另外的512字节空间,然后虚拟地连在一起.deque 的这种设计使得它具有比vector复杂得多的架构.算法和迭代器设计.它的性能损失比之vector,

Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)

Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 import collections # 初始化一个计数器 c = collections.Counter('sldfjoaoaufdlfuaof') print(c) # Counter({'f': 4, 'o': 3, 'a': 3, 'd': 2, 'u': 2, 'l': 2, 'j': 1,

python的collection系列-双向队列和单向队列

单向队列:数据先进先出 双向队列:可进可出 双向队列部分源码: 1 class deque(object): 2 """ 3 deque([iterable[, maxlen]]) --> deque object 4 5 Build an ordered collection with optimized access from its endpoints. 6 """ 7 def append(self, *args, **kwargs

Python学习笔记-Day03 -第二部分(双向队列-deque和单向队列Queue)

双向队列 线程安全的双向队列 例 >>> a= collections.deque() >>> a.append(1) >>> a.appendleft(2) >>> a.append(3) >>> a.appendleft(4) >>> a.append(5) >>> a.appendleft(6) >>> a deque([6, 4, 2, 1, 3, 5])

双端队列篇deque SDUT OJ 双向队列

双向队列 Time Limit: 1000MS Memory limit: 65536K 题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首:两头都可以做出队,入队的操作. 现在给你一系列的操作,请输出最后队列的状态: 命令格式: LIN X  X表示一个整数,命令代表左边进队操作: RIN X  表示右边进队操作: ROUT LOUT   表示出队操作: 输入 第一行包含一个整数M(M<=10000),表示有M个操作: 以下M行每行包含一条命令: 命令可能不合法