标签:比较 lifo 并发编程 定义 int lis __init__ 姓名 方法
目录
from queue import Queue,LifoQueue,PriorityQueue
from queue import Queue,LifoQueue,PriorityQueue
a = LifoQueue() # 后进先出,栈。跟对列相比,仅是取得顺序不同
a.put(1)
a.put(2)
a.put(3)
print(a.get())
print(a.get())
print(a.get())
3
2
1
from queue import Queue,LifoQueue,PriorityQueue
q = PriorityQueue() # 具备优先级的队列,取数据时,值越小,优先级越高
q.put(1)
q.put(3)
q.put(2)
print(q.get())
print(q.get())
print(q.get())
# 比较两个元组中的数据
b = (1,2,3,4,5)
c = (0.9,2,3,4)
d = (5,1,4,5)
q.put(b)
q.put(c)
q.put(d)
print(q.get())
print(q.get())
print(q.get())
1
2
3
(0.9, 2, 3, 4)
(1, 2, 3, 4, 5)
(5, 1, 4, 5)
需求:比较两个人的年龄,从小到大排序;如果年龄相等,则按照姓名排序。
from queue import PriorityQueue
# 定义类
class person():
def __init__(self,name,age):
self.name = name
self.age = age
# 重写运算符。即运算符重载
def __lt__(self, other):
if self.age == other.age:
return self.name < other.name
return self.age < other.age
# 创建队列
q = PriorityQueue()
p1 = person('ack',18)
p2 = person('boo',18)
p3 = person("hehe",17)
q.put(p1) # ack 18
q.put(p2) # boo 18
q.put(p3) # hehe 17
print(q.get().name)
print(q.get().name)
print(q.get().name)
hehe
ack
boo
运算符重载即 重写运算符方法。
标签:比较 lifo 并发编程 定义 int lis __init__ 姓名 方法
原文地址:https://www.cnblogs.com/plf-Jack/p/11153094.html