Python,len函数

-1 投票
4 回答
653 浏览
提问于 2025-04-16 08:18

我需要一些帮助,请查看编辑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和0)

那么我需要的输出是:

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

4 个回答

0

把代码中的if部分替换成

if len(huffTree) == 2:
      print huffTree[1], prefix, len(prefix)
4

根据我对你问题的理解,你需要在最后的print中加上len(prefix)

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

你需要测试一下

2

关于第二次编辑:

假设你有一些数据在 exampleData 里,如果 c 是你要用来乘每个数据的常数,那么你可以这样写:

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

我还是不太明白你问题的其他部分。

撰写回答