美文网首页
[数据结构]模块学习---queue、heapq

[数据结构]模块学习---queue、heapq

作者: 何学诚 | 来源:发表于2019-04-09 18:50 被阅读0次

1.首先了解queue模块

主要了解它的三个对象就好。

1.1 FIFO:队列queue.Queue()
print("*"*10, "队列", "*"*10)
q_queue = queue.Queue()

for i in range(5):
    q_queue.put(i)

while not q_queue.empty():
    print(q_queue.get())
output : 0 1 2 3 4
1.2 FILO:栈queue.LifoQueue()
print("*"*10, "栈", "*"*10)
q_stack = queue.LifoQueue()
for i in range(5):
    q_stack.put(i)

while not q_stack.empty():
    print(q_stack.get())
output : 4 3 2 1 0
1.3 优先队列: queue.PriorityQueue()
print("*"*10, "优先队列", "*"*10)
# PriorityQueue(priority_number, data)
# 优先等级值越小,优先级越高.
q_proir = queue.PriorityQueue()
q_proir.put((5 * -1, 'Python'))
q_proir.put((4 * -1, 'C'))
q_proir.put((3 * -1, 'Js'))
print("Inside PriorityQueue: ", q_proir.queue)  # 内部存储
while not q_proir.empty():
    print(q_proir.get()[1])
output : Python C Js

2.了解heapq模块

这是一个最小堆。主要包含三个方法。

  • heapify(iterable):使用iterable对象构造堆
  • heappush(heap, ele):向堆中插入数据
  • heappop(heap):从堆中移除并获得最小的元素
1.1 heappush 依次往堆里添加数据
print("*"*10, "heappush", "*"*10)
# 依次往堆内加入数据
for n in data:
    print('add {}'.format(n))
    heapq.heappush(heap, n)
    show_tree(heap)
print(heap)
1.2 heapify 同时加入数据
print("*"*10, "heapify", "*"*10)
# 同时加入数据
heapq.heapify(data)
print('heapified :')
print(data)
1.3 heappop 删除最小值数据
print("*"*10, "heappop", "*"*10)
# 删除最小值数据
for i in range(2):
    smallest = heapq.heappop(data)
    print('pop  {}:'.format(smallest))
    print(data)
3.完整代码

查看链接:
heapq:https://github.com/Wind0ranger/LeetcodeLearn/blob/master/model/test_heapq.py
queue:https://github.com/Wind0ranger/LeetcodeLearn/blob/master/model/test_queue.py

相关文章

网友评论

      本文标题:[数据结构]模块学习---queue、heapq

      本文链接:https://www.haomeiwen.com/subject/pariiqtx.html