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.
関数の大文字と小文字の区別と名前付けはどちらも、これが通常のコンストラクターではないことを強く示唆しています。