队列基本操作与对比(Queue、list、deque、PriorityQueue)(python)

队列特点:先进先出(头离尾进)

循环队列 

  1. Queue:
    from queue import *
    
    n = 10
    q = Queue()
    for i in range(n):
        q.put(i)  # q.put() 从队尾插入
    print(q.qsize())  # q.size() 队列大小
    print(q.empty())  # q.empty() 队列是否为空
    for i in range(n):
        a = q.get()  # q.get() 从队头删除,并返回
        print(a, end=' ')
    print()
    print(q.qsize())  # 队列大小
    print(q.empty())  # 队列是否为空
    
    '''输出结果
    10
    False
    0 1 2 3 4 5 6 7 8 9 
    0
    True'''
  2. list:
    n = 10
    q = []
    for i in range(n):
        q.append(i)
    print(q)
    print(len(q))
    
    for i in range(n):
        print(q[0], end=' ')
        del q[0]
    print()
    print(len(q))
    if not q:
        print('empty')
    
    '''输出结果
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    10
    0 1 2 3 4 5 6 7 8 9 
    0
    empty'''
  3. deque:双端队列,效率十分高
    from collections import *
    
    n = 10
    q = deque()
    for i in range(n):
        q.append(i)  # 入队,从队列右端(队尾)插入
        # q.appendleft 入队,从队列左端(队头)插入
    print(len(q))  # 队列大小
    if q:  # 判断是否空
        print('not empty')
    
    for i in range(n):
        a = q.popleft()  # 出队,从队列左端(队头)删除一个元素,并返回该元素
        # pop 出队,从队列右端(队尾)删除一个元素,并返回该元素
        print(a, end=' ')
    print()
    print(len(q))
    if not q:
        print('empty')
    
    '''输出结果
    10
    not empty
    0 1 2 3 4 5 6 7 8 9 
    0
    empty'''

优先队列PriorityQuene(可参考二叉堆)

import queue

pq = queue.PriorityQueue()  # 定义
pq.put([priority, value])  # 进队列
# put()的第一个参数priority表示数据的优先级,第二个参数value是值
# 如果只有一个参数,同时表示优先级和值。值越小优先级越高,队首总是最小值
pq.get()  # 取出队首
pq.empty()  # 判断空
pq.qsize()  # 队列大小

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值