在使用heapq的优先队列时,发现了标题中的现象,一度怀疑优先队列出错了
演示代码如下:
import heapq
class priority_queue:
def __init__(self):
self.q=[]
def push(self,x):
heapq.heappush(self.q,x)
def pop(self):
return heapq.heappop(self.q)
def front(self):
return self.q[0]
a=[4,2,6,7,0,6,-1,54]
q=priority_queue()
for i in a:
q.push(i)
print(q.q)
while len(q.q):
print(q.front(),end=' ')
q.pop()
print()
结果为:
[-1, 2, 0, 7, 4, 6, 6, 54]
-1 0 2 4 6 6 7 54
Press any key to continue . . .
具体原因没有深究,有知道的大佬可以指点指点。
总之,使用heapq访问q[0]后面的内容时要注意。