Python,len函数
我需要一些帮助,请查看编辑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)
我还是不太明白你问题的其他部分。