2014-11-06 155 views
0

我被要求在Python中創建函數,而不使用循環和樹來表示霍夫曼編碼。我創建的函數從該輸入:Python中的遞歸霍夫曼編碼

[('a',4),('b',10),('c',15),('d',18),('e',42),('f',11)] 

給出了這樣的輸出:

('e', (('f', ('a', 'b')), ('c', 'd'))) 

現在,我應該創建功能,該輸出編碼成

[('e','0') , ('f','100') , ('a', '1010') , ('b' , '1011') , ('c', '110') , ('d','111') ] 

我不知道如何(不使用循環)將元組更改爲列表,並同時將10添加到某些元素。

+0

你知道什麼是遞歸函數嗎?因爲我很確定「不使用循環」意味着你應該寫一個遞歸函數。看看輸入格式:它是一個包含兩個元素的元組,每個元素都是一個字母或另一個元組。這應該告訴你如何遞歸分解它。 – abarnert 2014-11-06 00:07:56

+0

學習遞歸更多。 **提示:**遞歸是一個循環,只是形式不同而已。 – 2014-11-06 00:08:11

+0

另外,我不確定這是如何「不使用樹木」;嵌套列表(或元組)是表示樹的最明顯的方法之一(因爲任何基於Lisp的教科書中的一半練習都證明了......)。 – abarnert 2014-11-06 00:09:59

回答

0

list() - >新的空單

list(iterable) - >新的列表,從可迭代的項目

元組初始化是一個迭代,所以調用一個list將產生它的元素的列表。