队列Queue、栈LifoQueue、优先级队列PriorityQueue

队列:队列是先进先出。

import queue

q = queue.Queue()
q.put(1)
q.put(2)
q.put(3)
q.put(4)
print(q.get())
print(q.get())
print(q.get())
print(q.get())

当队列为空时,使用get()会产生阻塞;当队列已经满了,使用put会产生阻塞。因此可以使用get_noweit(),put_noweit()就不会产生阻塞,会在队列为空或者充满状态时raise empty或者raise full。

q.queue  查看队列全部内容。

q.full()  当队列为充满状态时返回True。

q.empty()  当队列为空时返回True。

q.qsize()  查看队列的大小

栈:栈是先进后出。

import queue


q = queue.LifoQueue()
q.put(1)
q.put(2)
q.put(3)
q.put(4)
print(q.get())
print(q.get())
print(q.get())
print(q.get())

优先级队列:优先队列是根据优先级判定谁先出来,如果优先级一样,则按数据的ascii码输出。

import queue


q = queue.PriorityQueue()
q.put((10, 'b'))
q.put((30, 'a'))
q.put((13, 'f'))
q.put((-3, 'k'))
q.put((-3.5, 'c'))
q.put((-7.5, 'h'))
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())

输出结果:

(-7.5, 'h')
(-3.5, 'c')
(-3, 'k')
(10, 'b')
(13, 'f')
(30, 'a')

数越小越优先

优先级一样,比较后面数据的ascii码

 

posted @ 2018-10-27 09:03  aaronthon  阅读(605)  评论(0编辑  收藏  举报