我最初尝试使用优先级队列编写算法来解决15-puzzle,但我的讲师告诉我们,我们需要在a *实现中编写,并建议我们使用heapq而不是优先级队列。我无法找到我的heapq的长度/大小,并访问我的heapq元素。我的印象是,通过使用heapq,您将能够访问heapq中您无法在优先级队列中访问的元素。但是,似乎没有任何方法可以从heapq中查找长度/检索元素。你们中的任何人都知道如何获得heapq的长度/元素或更适合这种情况的数据结构吗?
答案 0 :(得分:1)
heapq
堆只不过是其元素尊重特殊(非唯一)订单的列表。
您可以像使用任何其他列表一样使用len(heap)
。
In [1]: import heapq
In [2]: heap = [40, 10, 20, 30]
In [3]: heapq.heapify(heap)
In [4]: heap
Out[4]: [10, 30, 20, 40]
In [5]: heapq.heappop(heap)
Out[5]: 10
In [6]: heap
Out[6]: [20, 30, 40]
In [7]: len(heap)
Out[7]: 3
您还应该阅读the python documentation for heapq:example section您应该感兴趣。