python(3)-队列
队列分为双向队列和单向队列:
对于双向队列,同样需要先import collections
创建队列
>>> import collections >>> d = collections.deque() >>> type(d) <class 'collections.deque'>
向队列中添加元素
>>> d.appendleft("1") #从左边添加 >>> print(d) deque(['1']) >>> d.append('2') #从右边添加 >>> print(d) deque(['1', '2'])
双向队列中的方法
>>> d.append('2') >>> print(d) deque(['1', '2']) >>> d.append('2') >>> print(d) deque(['1', '2', '2']) #计数 >>> d.count('2') >>> d.extend(['33','44']) #扩展 >>> print(d) deque(['1', '2', '2', '33', '44']) >>> d.extendleft(['11','22']) #从左边扩展 >>> print(d) deque(['22', '11', '1', '2', '2', '33', '44']) #注意顺序,队列是先进先出的 >>> d.pop() #从右边取数据 '44' >>> d.pop() '33' >>> >>> d.popleft() #从左边取数据 '22' >>> d.popleft() '11' >>> >>> print(d) deque(['1', '2', '2']) >>> d.remove("2") #从队列中删除数据 >>> print(d) deque(['1', '2']) >>> d.append(["33","44"]) #向队列中添加列表 >>> print(d) deque(['1', '2', ['33', '44']]) >>> d.rotate(1) #把最后一个放到前面 >>> print(d) deque([['33', '44'], '1', '2']) >>> d.rotate(2) #把最后两个放到前面 >>> print(d) deque(['1', '2', ['33', '44']]) >>> d.reverse() #反转 >>> print(d) deque([['33', '44'], '2', '1'])
单向队列:
单向队列需要import queue
>>> import queue >>> q = queue.Queue() #创建单向队列 >>> type(q) <class 'queue.Queue'>
单向队列的方法
>>> q.put("a") #往队列中放元素 >>> q.put(["b","c"]) >>> print(q) <queue.Queue object at 0x000000000309DE80> >>> q.qsize() #队列中元素的个数 2 >>> q.get() #往外拿元素,先进先出,当元素被拿完时,队列会处于等待状态,直到有元素被put 'a' >>> q.get() ['b', 'c'] >>> q.get() >>> q = queue.Queue() >>> q.empty() #队列是否为空 True >>> q = queue.Queue(maxsize = 3) #定义队列的最大长度 >>> q.put(1) >>> q.put(2) >>> q.put(3) >>> q.put(4) #当put的元素超出最大长度时队列会处于等待状态,直到空出数据单元