我有一个名为mylist的列表。如果我在我的程序中输入print mylist
,我就可以打印列表并查看项目。然后我将列表项转移到堆队列中:
myheap=heapq.heapify(mylist)
print myheap
打印None
。有什么问题?
答案 0 :(得分:9)
您未能阅读文档:
heapify(x)
在线性时间内将列表x转换为就地堆。
heapify()
方法就地转换列表,但不会返回新列表。您应该打印mylist
:
>>> a=[43,12,4,1,5,3,5,3,5,2,64,352,36]
>>> import heapq
>>> heapq.heapify(a)
>>> a
[1, 2, 3, 3, 5, 4, 5, 12, 5, 43, 64, 352, 36]
正如评论中所指出的,这对于Pythonn API来说有点奇怪。我不确定,但我想这是为了效率而做的。当然,heapify()
函数当然可以返回输入引用,使其不那么令人惊讶。
如果API是一个构造函数,它返回一个新构造的对象,就像你期望的那样,它很可能被命名为不同的,可能是:
myheap = heapq.HeapQ(a) # This is not valid code.
函数的大小写和命名都是强有力的提示,这是不是常规构造函数。