0

我为更容易理解和可用性而构建的这个结构

    class PriorityQueue:
"""
  Implements a priority queue data structure.
"""
def  __init__(self):
    self.heap = []
    self.count = 0

def push(self, item, priority):
    entry = (priority, self.count, item)
    heapq.heappush(self.heap, entry)
    self.count += 1

def pop(self):
    (_, _, item) = heapq.heappop(self.heap)
    return item

def isEmpty(self):
    return len(self.heap) == 0

我想添加一个方法,该方法将返回当前在此类中的项目列表,以便它返回列表元素而无需实际弹出每个项目

有没有这样的方法或者我必须提取每个元素

4

1 回答 1

0

您的方法可能如下所示:

def items(self):
    return list(item for _, _, item in self.heap)

这将迭代堆并构建一个新列表,其中包含对堆中项目的引用,而无需修改堆。

请注意,如果您的项目是可变对象,则修改列表中的项目也会修改堆中的引用项目。这可能是可取的,也可能不是可取的。

另请注意,此列表不会按优先级排序。

于 2013-07-17T07:27:18.893 回答