heapify返回NoneType

时间:2011-09-19 02:21:45

标签: python

我有

b = heapify([5,4,9,1])

如果我做了

type(b)

它说它是NoneType而不是列表类型,任何人都知道我做错了什么?

2 个答案:

答案 0 :(得分:7)

heapify()方法就地转换列表。这意味着它会更改列表,但不会返回修改后的列表。正如agf在下面提到的,heapify()返回None以保护您免受此错误的影响。因此,如果你这样做

lst = [5,4,9,1]
heapify(lst)
type(lst)

您将看到lst现已堆积。有关详细信息,请参阅library reference

答案 1 :(得分:1)

heapify改变传递给它的列表;就像l.sort()的做法一样。

>>> import heapq
>>> l = [9, 8, 7, 6]
>>> heapq.heapify(l)
>>> l
[6, 8, 7, 9]