我有一个名为 mylist 的列表。如果我进入print mylist
我的程序,我可以打印我的列表并查看项目。然后我将列表项转移到堆队列中:
myheap=heapq.heapify(mylist)
print myheap
它打印None
。怎么了?
我有一个名为 mylist 的列表。如果我进入print mylist
我的程序,我可以打印我的列表并查看项目。然后我将列表项转移到堆队列中:
myheap=heapq.heapify(mylist)
print myheap
它打印None
。怎么了?
您未能阅读文档:
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.
函数的大小写和命名都强烈暗示这不是一个常规的构造函数。