Python, функция len - PullRequest
       5

Python, функция len

0 голосов
/ 09 декабря 2010

Мне нужна помощь, ПОЖАЛУЙСТА, СМОТРИТЕ В РЕДАКЦИИ 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 ]

4 голосов
/ 09 декабря 2010

Как я понимаю ваш вопрос, вам нужно добавить 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

Вам нужно проверить это

2 голосов
/ 09 декабря 2010

Для редактирования 2:

Использование ваших данных в exampleData, и если c - это константа, умножаемая каждый к тому времени:

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

IЯ все еще не понимаю остальную часть вашего вопроса.

0 голосов
/ 09 декабря 2010

Заменить часть кода if на

if len(huffTree) == 2:
      print huffTree[1], prefix, len(prefix)
0 голосов
/ 09 декабря 2010

Я думаю, что вы ответили на свой вопрос ?! Просто измените print huffTree[1], prefix на print huffTree[1], prefix, len(prefix).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...