2012-10-23 28 views
0

我想了解一些Python內置的堆功能。當我傳入元組列表(或者更可能的是,我沒有正確地傳遞列表)時,它似乎不喜歡這些事情。這裏是我有:Python:在元組列表上使用堆命令

myList = (('a', 1), ('b', 2)) 
heapify(myList) 

,我得到的是

TypeError: heap argument must be a list

我是不是做錯了什麼錯誤?是否有另一種方法來傳遞元組列表?

謝謝!

回答

7

問題是myList是一個元組。嘗試:

myList = [('a', 1), ('b', 2)] 
heapify(myList) 
+1

但是Python中曾經這樣說過。 +1爲仍然回答:) – Ber

+1

感謝您的回覆,lazyr。對於語言新手來說,很容易就會錯過這樣的事情。 Ber可能想要記住的東西。 – Alex

2

如上heapify轉換的列表(myList中)到一個堆。所以如果你想使用heapify,你必須首先將所有東西都翻譯成列表。

http://docs.python.org/library/heapq.html < ---讓您更詳細一點關於heapq

+0

謝謝。我用它作爲了解二進制堆的參考,但是我只是忽略了一個事實,即當我打算將它創建爲列表時,我的數據結構已實例化爲一個元組。 – Alex