我有一个名为mylist的列表.如果我输入print mylist我的程序,我可以打印我的列表并查看项目.然后我将列表项转移到堆队列中:
myheap=heapq.heapify(mylist)
print myheap
Run Code Online (Sandbox Code Playgroud)
它打印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]
Run Code Online (Sandbox Code Playgroud)
正如评论中所指出的,对于Pythonn API来说这有点奇怪.我不确定,但我想这是为了效率而做的.当然,heapify()函数当然可以返回输入引用,使其不那么令人惊讶.
如果API是一个构造函数,它返回一个新构造的对象,就像你期望的那样,它很可能被命名为不同的,也许:
myheap = heapq.HeapQ(a) # This is not valid code.
Run Code Online (Sandbox Code Playgroud)
函数的大小写和命名都是强有力的提示,这不是一个常规的构造函数.
| 归档时间: |
|
| 查看次数: |
2288 次 |
| 最近记录: |