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的元素超出最大长度时队列会处于等待状态,直到空出数据单元
posted @ 2016-02-25 00:06  黄小墨  阅读(670)  评论(0编辑  收藏  举报