2014-11-06 116 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将产生它的元素的列表。