标签:queue 结果 mos module ascii fir line list lifo
后进先出的队列
栈结构:其实就是一个后进先出的一个线性表,只能在栈顶压入或弹出元素
import queue.LifoQueue()
q = queue.LifoQueue()
q.put('first')
q.put('second')
q.put('third')
print(q.get())
print(q.get())
print(q.get())
结果
third
second
first
如何用列表实现栈
lis = []
lis.append('a') #压入元素‘a'
lis.append('b') #压入元素'b'
lis = ['a','b']
lis.pop() #弹出元素'b'
lis.pop() #弹出元素'a'
###################################
>>> x=[] #创建一个空列表,此处表示栈
>>> x
[]
>>> x.append('a') #压入元素'a'
>>> x
['a']
>>> x.append('b') #压入元素'b'
>>> x
['a', 'b']
>>> x.pop() #弹出栈顶元素'b'
'b'
>>> x
['a']
>>> x.pop() #弹出栈顶元素'a'
'a'
>>> x
[]
>>> x.pop() #试图对一个空栈做弹出操作,会报异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop from empty list
队列,类似于栈
队列,其实就是一个先进先出的线性表,只能在队首执行删除操作,在队尾执行插入操作,用列表表示队列,可以用append()方法实现队尾插入元素,用pop(0)方法实现在队首删除元素
>>> x=[]
>>> x.append('a')
>>> x
['a']
>>> x.append('b')
>>> x
['a', 'b']
>>> x.pop(0)
'a'
>>> x.pop(0)
'b'
>>> x.pop(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop from empty list
q = queue.PriorityQueue()
put进入一个元组,元组的第一个元素是优先级,通常是数字,也可以是非数字之间的比较,数字越小,优先级越高,负数也可以
如果两个值的优先级一样,那么按照后面的数据的ASCII码顺序来排序
q = queue.PriorityQueue()
q.put((1, "david"))
q.put((3, "world"))
q.put((2, "hello"))
print(q.get())
print(q.get())
print(q.get())
########################
(1, 'david')
(2, 'hello')
(3, 'world')
这三种队列都是安全的,不会出现多个线程抢占同一个资源的情况
标签:queue 结果 mos module ascii fir line list lifo
原文地址:https://www.cnblogs.com/daviddd/p/12034442.html