Python,len函数

时间:2010-12-09 17:40:55

标签: python text

我需要一些帮助,请查看编辑2  这是霍夫曼的代码:

def printHuffTree(huffTree, prefix = ''):
   if len(huffTree) == 2:
      print huffTree[1], prefix

exampleData = [
  (0.124167  , 'e')
]


if __name__ == '__main__':
   huffTree = makeHuffTree(exampleData)
   printHuffTree(huffTree)

输出是:

e 00
t 01
a 10
i 11

我需要一些功能或任何可以计算这个数字的东西;例如,如果

 e 00

我需要计算这里有多少个数字:2 (0 and 0)

所以输出我需要:

e 00  2
t 01  2
a 10  2
i 11  2

4 个答案:

答案 0 :(得分:4)

根据我的理解,您需要将len(prefix)添加到最终print

def printHuffTree(huffTree, prefix = ''):
   if len(huffTree) == 2:
      print huffTree[1], prefix, len(prefix)

更新以回答新问题

def printHuffTree(huffTree, prefix = '', s=0):
   if len(huffTree) == 2:
      print huffTree[1], prefix, len(prefix)
      return len(prefix)*huffTree[0]

   else:
      s+= printHuffTree(huffTree[1], prefix + '0')
      s+= printHuffTree(huffTree[2], prefix + '1')
      return s

您需要对其进行测试

答案 1 :(得分:2)

编辑2:

exampleData中使用您的数据,如果c是常数,则每个数字乘以:

result = sum(c*i[0] for i in exampleData)

我仍然不理解你的其余问题。

答案 2 :(得分:0)

我想你已回答了自己的问题?!只需将print huffTree[1], prefix更改为print huffTree[1], prefix, len(prefix)

答案 3 :(得分:0)

替换代码的if部分
if len(huffTree) == 2:
      print huffTree[1], prefix, len(prefix)