如何在不使用类的情况下反转Python中的优先级队列?

2024-10-03 02:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚学习了Python中的优先级队列,并编写了以下代码:

def main():
    q=Queue.PriorityQueue()
    while True:
        n=input("numbre?")
        if n==0:
            break
        else:
            q.put(n)
            print n

while not q.empty():
        print q.get()

当我输入数据如:9,1,4,5

它打印的是1,4,5,9,这看起来是正确的,但是我想知道如何以相反的顺序进行deque,我的意思是:9,5,4,1

我知道如何使用类来实现这一点,但在本例中,似乎有以下额外的代码:

^{pr2}$

不行,有什么帮助吗?在


Tags: 代码trueinputif队列queueputmain
1条回答
网友
1楼 · 发布于 2024-10-03 02:36:41

常见的模式是插入数据(作为元组)以及优先级。所以,您可以简单地像这样更改put

q.put((-n ,n))

所以,当比较元组时,如果数字是9,1,4和5,它们将被这样比较(-9,9),(-1,1),(-4,4)和(-5,5)。因为,-9是所有最小的,它将首先被检索,然后是-5,然后是-4,然后是-1。在

示例:

^{pr2}$

输出

(-9, 9)
(-5, 5)
(-4, 4)
(-1, 1)

为了只得到实际值,只需打印第二个元素,如下所示

while not Q.empty():
    print Q.get()[1]

相关问题 更多 >