精华内容
下载资源
问答
  • python实现队列
    2021-03-15 01:12:41

    1.实现一个队列,使其具有入队列,出队列,查看队列收尾元素,查看队列大等功能
    2.使用列表和链表实现

    列表实现队列
    class MyQueue():
        def __init__(self):
            self.arr = []
            self.front = 0 #队头
            self.rear = 0 #队尾
    
        def isempty(self):
           return  len(self.arr) == 0
    
        def size(self):
            return len(self.arr)
    
        def return_first(self):
            if self.isempty():
                return None
            return self.arr[self.front]
    
        def return_last(self):
            if self.isempty():
                return None
            return self.arr[self.rear-1]
    
        #删除队列头部元素
        def de_fist(self):
            if self.rear > self.front:
                self.front += 1
            else:
                print('None')
        #把新元素加到队尾
        def enQueue(self,item):
            self.arr.append(item)
            self.rear += 1
    if __name__ == '__main__':
        q = MyQueue()
        q.enQueue(1)
        q.enQueue(2)
        print(q.return_first())
        print(q.return_last())
        print(q.size())
    

    4.缺点

    以上这种方法最大的缺点是出队后队列头部空间不能被充分利用,可以利用循环队列解决这个问题

    5.链表实现队列

    class Node():
        def __init__(self,value = None):
            self.value = value
            self.next = None
    
    class MyQueue():
        def __init__(self):
            self.pHead = None
            self.pEnd = None
    
        def empty(self):
            if self.pHead == None:
                return True
            else:
                return False
    
        def size(self):
            size = 0
            p = self.pHead
            while p != None:
                p = p.next
                size += 1
            return size
    
        def enQueue(self,e):
            p = Node()
            p.data = e
            p.next = None
            if self.pHead  == None:
                self.pHead =self.pEnd =  p
            else:
                self.pEnd.next = p
                self.pEnd = p
    
        def deQueue(self):
            if self.pHead == None:
                print('队列为空')
            self.pHead = self.pHead.next
            if self.pHead == None:
                self.pEnd = None
    
        def getFront(self):
            if self.pHead == None:
                print('获取队列首元素失败,队列已经为空')
                return None
            return self.pHead.data
    
        def getBack(self):
            if self.pEnd == None:
                print('队列为空')
                return None
            return self.pEnd.data
    
    if __name__ == '__main__':
        q = MyQueue()
        q.enQueue(1)
        q.enQueue(2)
        print(q.getFront())
        print(q.getBack())
        print(q.size())
    
    
    
    更多相关内容
  • 本文实例讲述了python双端队列原理、实现与使用方法。分享给大家供大家参考,具体如下: 双端队列 双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。 双端队列中的元素可以从两端弹...
  • 主要为大家详细介绍了python队列queue模块的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 什么是队列?  队列就是只能在一端插入,而在另一端删除的线性表,故队列又称为先进先出队列 队列类型有哪些? 循环队列和顺序队列  队列的存储实现方式有哪些? 顺序存储(数组)和链式存储(链表),此博文描述...
  • Python实现队列的方法

    2020-12-25 03:33:36
    本文实例讲述了Python实现队列的方法。分享给大家供大家参考。具体实现方法如下: #!/usr/bin/env python queue = [] def enQ(): queue.append(raw_input('Enter new string: ').strip()) #调用list的列表的pop()...
  • queue是python中的标准库,俗称队列。这篇文章给大家介绍了Python3 queue队列模块,包括模块中的常用方法及构造函数,需要的朋友参考下吧
  • 因为系统本身一直在用RabbitMQ做异步处理任务的中间件,所以想到是否可以利用RabbitMQ实现延迟队列。功夫不负有心人,RabbitMQ虽然没有现成可用的延迟队列,但是可以利用其两个重要特性来实现之:1、Time To Live...
  • 主要介绍了Python优先队列实现方法,结合实例形式分析了Python优先队列的具体定义与使用方法,具有一定参考借鉴价值,需要的朋友可以参考下
  • Python实现队列

    2020-12-22 11:17:39
    Python实现队列 关于队列的介绍,请参考:https://blog.csdn.net/weixin_43790276/article/details/104033337 队列的数据存储结构可以是顺序表,也可以是链表,本篇使用 Python 来分别实现顺序队列和链队列。 一、...
  • “消息队列”是在消息的传输过程中...Python的消息队列示例: 1.threading+Queue实现线程队列 #!/usr/bin/env python import Queue import threading import time queue = Queue.Queue() class ThreadNum(threading
  • 文章目录一、线程池组成二、线程安全队列的实现三、测试逻辑3.1、测试阻塞逻辑3.2、测试读写加锁逻辑 一、线程池组成  一个完整的线程池由下面几部分组成,线程安全队列、任务对象、线程处理对象、线程池对象。其中...
  • 主要介绍了python 队列基本定义与使用方法,结合实例形式分析了Python队列的定义、初始化、赋值、判断等相关操作技巧,需要的朋友可以参考下
  • python队列_Python队列

    2020-07-14 07:34:52
    python队列In our previous tutorial we have discussed about python time sleep function of the time module. In this tutorial we will learn about python queue module. 在之前的教程中,我们讨论了有关time...

    python队列

    In our previous tutorial we have discussed about python time sleep function of the time module. In this tutorial we will learn about python queue module.

    在之前的教程中,我们讨论了有关time模块的python time sleep函数。 在本教程中,我们将学习python队列模块。

    Python队列 (Python queue)

    When we want to process our data in the way they have arrived, then using queue is the best option. Queue is a concept of first in first out data structure. Have a look at the following example:

    当我们想以数据到达的方式处理数据时,最好使用队列。 队列是先进先出数据结构的概念。 看下面的例子:

    # importing the queue module
    import queue
    
    # taking an object of Queue()
    q = queue.Queue()
    
    # enqueueing some value in the object of Queue
    q.put('A')
    q.put('B')
    q.put('C')
    q.put('D')
    q.put('E')
    
    # retrieving the values of the Queue
    for i in range(q.qsize()):
       print(q.get())

    This will output:

    python queue

    这将输出:

    Python队列示例代码分析 (Python Queue Example code analysis)

    In the very first line we have imported the python queue module. Then we have created an object of Queue as the queue module contain three classes like Queue, LifoQueue and PriorityQueue.

    在第一行中,我们导入了python队列模块。 然后,我们创建了一个Queue对象,因为该队列模块包含三个类,例如QueueLifoQueuePriorityQueue

    Then we have added some value to the object of queue using put() method. Finally we have retrieved the values until the size of the q, using get() method. And if you notice the output, you will see that the outputs are as the way we have added.

    然后,我们使用put()方法向队列对象添加了一些值。 最后,我们使用get()方法检索了值直到q的大小。 而且,如果您注意到输出,您将看到输出与我们添加的方式相同。

    Python Queue常用方法 (Python Queue common methods)

    In the python queue module, the followings are the most common methods that are used to manipulate or operate on the queue objects. We have already seen three methods in the previous example. They are put(), get() and qsize(). We will see some other methods.

    在python队列模块中,以下是用于操作队列对象或对其进行操作的最常用方法。 在前面的示例中,我们已经看到了三种方法。 它们是put()get()qsize() 。 我们将看到其他一些方法。

    Python队列full()函数 (Python Queue full() function)

    To check whether a queue object is full or not. It returns true if the queue is full otherwise false.

    检查队列对象是否已满。 如果队列已满,则返回true,否则返回false。

    Python Queue empty()函数 (Python Queue empty() function)

    If the queue is empty then it returns true otherwise false.

    如果队列为空,则返回true,否则返回false。

    See the following example:

    请参见以下示例:

    # importing only the Queue from the queue module
    from queue import Queue
    
    # taking an object of Queue()
    q = Queue()
    print("Initially the size of queue is %s" % q.qsize())
    print("Checking whether queue is empty or not. Empty?? = %s" % q.empty())
    
    # enqueueing some value in the object of Queue
    q.put('A')
    q.put('B')
    q.put('C')
    q.put('D')
    q.put('E')
    
    print("After adding some value, size of queue is %s" % q.qsize())
    print("Checking whether queue is full or not. Full?? = %s" % q.full())
    
    # retrieving the values of the Queue
    for i in range(q.qsize()):
       print("Retrieved = ", end=' ')
       print(q.get())
    
    # after retrieving, check the size of the object
    print("Size of queue is = %s " % q.qsize())

    Above python queue example code will produce following output.

    上面的python队列示例代码将产生以下输出。

    Initially the size of queue is 0
    Checking whether queue is empty or not. Empty?? = True
    After adding some value, size of queue is 5
    Checking whether queue is full or not. Full?? = False
    Retrieved =  A
    Retrieved =  B
    Retrieved =  C
    Retrieved =  D
    Retrieved =  E
    Size of queue is = 0

    Python LifoQueue (Python LifoQueue)

    Python LifeQueue is similar to queue except that it’s last-in-first-out data structure. Below is a simple python LifoQueue example code.

    Python LifeQueue与队列相似,除了它的后进先出数据结构。 以下是一个简单的python LifoQueue示例代码。

    import queue
    
    q = queue.LifoQueue()
    
    q.put('A')
    q.put('B')
    q.put('C')
    
    for i in range(q.qsize()):
        print(q.get())

    Below image shows the output produced by python LifoQueue example code.

    下图显示了python LifoQueue示例代码产生的输出。

    Python优先级队列 (Python Priority Queue)

    Priority Queue returns the item in the order of the priority. So when we add an item to the priority queue, we also provide it’s priority. Then we retrieve items, they are returned in the order of the priority. Lower number priority items are returned first.

    Priority Queue按优先级顺序返回项目。 因此,当我们将项目添加到优先级队列时,我们还提供了它的优先级。 然后我们检索项目,它们按优先级顺序返回。 优先级较低的项目将首先返回。

    Below is python PriorityQueue example code.

    以下是python PriorityQueue示例代码。

    import queue
    
    q = queue.PriorityQueue()
    
    q.put((1, 'A'))
    q.put((3, 'B'))
    q.put((2, 'C'))
    
    for i in range(q.qsize()):
        print(q.get())

    Here is the output produced by python priority queue example program.

    这是python优先级队列示例程序产生的输出。

    优先级队列Python heapq模块 (Priority Queue Python heapq module)

    Python Queue module PriorityQueue functions are synchronized. There is another module heapq that also implements priority queue in python.

    Python Queue模块PriorityQueue函数已同步。 还有另一个模块heapq ,也可以在python中实现优先级队列。

    import heapq
    
    q = []
    
    heapq.heappush(q, (2, 'B'))
    heapq.heappush(q, (1, 'A'))
    heapq.heappush(q, (3, 'C'))
    
    while q:
        item = heapq.heappop(q)
        print(item)

    Output produced by heapq priority queue implementation example program is shown in below image.

    下图显示了heapq优先级队列实现示例程序产生的输出。

    That’s all about Python Queue, Priority Queue and LifoQueue.

    这就是关于Python队列,优先级队列和LifoQueue的全部内容。

    Reference: Official Doc

    参考: 官方文件

    翻译自: https://www.journaldev.com/15804/python-queue

    python队列

    展开全文
  • 主要介绍了基于python操作redis及消息队列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了Python 实现数据结构-循环队列的操作方法,需要的朋友可以参考下
  • 一个由python写简单和容易使用的消息队列
  • 本文给大家介绍的是使用很简单的代码实现的多线程任务队列,给大家一个思路,希望对大家学习python能够有所帮助
  • 主要介绍了Python队列RabbitMQ 使用方法,结合实例形式分析了Python队列RabbitMQ创建队列发送消息与创建消费者消费信息相关操作技巧,需要的朋友可以参考下
  • 主要介绍了Python 进程操作之进程间通过队列共享数据,队列Queue,结合实例形式分析了Python进程数据共享、队列数据处理相关操作技巧,需要的朋友可以参考下
  • 主要介绍了Python queue队列原理与应用,结合具体案例形式分析了Python queue队列的原理、功能、实现方法与使用技巧,需要的朋友可以参考下
  • Python 优先队列

    2020-12-03 10:50:37
    Python 优先队列,优先队列是一个容器数据结构,使用具有全序关系的键(例如用数值表示的权重)来管理元素,以便快速访问容器中键值最小或最大的元素。优先队列可被视为队列的改进版,其中元素的顺序不是基于插入时间...

    Python 优先队列,优先队列是一个容器数据结构,使用具有全序关系的键(例如用数值表示的权重)来管理元素,以便快速访问容器中键值最小或最大的元素。

    优先队列可被视为队列的改进版,其中元素的顺序不是基于插入时间,而是基于优先级的。对键进行处理能得到每个元素的优先级。

    优先级队列通常用于处理调度问题,例如优先考虑更加紧急的任务。

    来看看操作系统任务调度器的工作。

    理想情况下,系统上的高优先级任务(如玩实时游戏)级别应高于低优先级的任务(如在后台下载更新)。优先级队列将待执行的任务根据紧急程度排列,任务调度程序能够快速选取并优先执行优先级最高的任务。

    本节将介绍如何使用Python语言内置或位于标准库中的数据结构来实现优先队列。每种实现都有各自的优缺点,但其中有一种实现能应对大多数常见情况,下面一起来看看。

    Python 优先队列 列表——手动维护有序队列

    使用有序列表能够快速识别并删除最小或最大的元素,缺点是向列表插入元素表是很慢的

    操作。

    虽然用标准库中的bisect.insort能在

    时间内找到插入位置,但缓慢的插入操作才是瓶颈。

    向列表添加并重新排序来维持顺序也至少需要

    的时间。另一个缺点是在插入新元素时,必须手动重新排列列表。缺少这一步就很容易引入bug,因此担子总是压在开发人员身上。

    因此,有序列表只适合在插入次数很少的情况下充当优先队列。

    Python 优先队列 heapq——基于列表的二叉堆

    heapq是二叉堆,通常用普通列表实现,能在

    时间内插入和获取最小的元素。

    heapq模块是在Python中不错的优先级队列实现。由于heapq在技术上只提供最小堆实现,因此必须添加额外步骤来确保排序稳定性,以此来获得“实际”的优先级队列中所含有的预期特性。

    Python 优先队列 queue.PriorityQueue——美丽的优先级队列

    queue.PriorityQueue这个优先级队列的实现在内部使用了heapq,时间和空间复杂度与heapq相同。

    区别在于PriorityQueue是同步的,提供了锁语义来支持多个并发的生产者和消费者。

    在不同情况下,锁语义可能会带来帮助,也可能会导致不必要的开销。不管哪种情况,你都可能更喜欢PriorityQueue提供的基于类的接口,而不是使用heapq提供的基于函数的接口。

    关键要点

    Python提供了几种优先队列实现可以使用。

    queue.PriorityQueue是其中的首选,具有良好的面向对象的接口,从名称就能明白其用途。

    如果想避免queue.PriorityQueue的锁开销,那么建议直接使用heapq模块。

    展开全文
  • 主要介绍了Python高级编程之消息队列(Queue)与进程池(Pool),结合实例形式详细分析了Python消息队列与进程池的相关原理、使用技巧与操作注意事项,需要的朋友可以参考下
  • 本文实例讲述了Python实现的数据结构与算法之队列。分享给大家供大家参考。具体分析如下: 一、概述 队列(Queue)是一种先进先出(FIFO)的线性数据结构,插入操作在队尾(rear)进行,删除操作在队首(front)进行...
  • Python 队列 Queue 队列是一种先进先出(FIFO)的数据类型, 新的元素通过 入队 的方式添加进 Queue 的末尾, 出队 就是从 Queue 的头部删除元素. 用列表来做 Queue: queue = [] # 初始化一个列表数据类型对象, 作为一...
  • 引言 什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。...在python中是没有数组的,有的是列表,它是一种基本的数据结构类型。 实现 class Array(o

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 172,574
精华内容 69,029
关键字:

python 有限队列