开发者

Python, len function

开发者 https://www.devze.com 2023-01-29 12:47 出处:网络
I need some help, PLEASE LOOK AT EDIT 2 This is code of huffman: def printHuffTree(huffTree, prefix = \'\'):

I need some help, PLEASE LOOK AT EDIT 2 This is code of huffman:

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

exampleData = [
  (0.124167  , 'e')
]


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

output is:

e 00
t 01
a 10
i 11

I need some function or anything which can count this nu开发者_C百科mbers; for example if

 e 00

i need to count how many numbers is here: 2 (0 and 0)

so output that I need :

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


As I understand your question, you need to add len(prefix) to your final print:

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

Update to answer the new question

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

You need to test it


For edit 2:

Using your data in exampleData and if c is the constant to multiply each by then:

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

I'm still not understanding the rest of your question.


I think you've answered your own question?! Just change print huffTree[1], prefix to print huffTree[1], prefix, len(prefix).


Replace the if part of the code with

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

精彩评论

暂无评论...
验证码 换一张
取 消