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 に答える