1
phrase='hello overflow'
sequence='00100011101010000110101011000110110100'
tree=[
       [
         [
           [' ', 'f'],
           ['h', 'r']
         ],
         [
           ['w', 'v'],
           'e'
         ]
       ],
       ['l', 'o']
     ]

我在迭代列表“树”时遇到了一些问题。我想要做的是,给定输入的位流,在这种情况下,“序列”,“树”相应地迭代每个位,例如:

如果我想要“短语”中的字母“h”,它对应于“序列”中的 4 个第一位,(0010),我必须转到树 [0][0][1][0]。

我有两个关于如何做到这一点的想法,其中之一是使用这样的 for 循环:

for bit in phrase:
    if len(tree[bit])>1:
        calls recursive method, plus some rules

def recursive(list,bit):
    return list[bit]

但这给了我一个问题,因为我无法从流中提供新位,而在递归方法的循环内。

另一种是在“序列”和“树”之间使用某种并行迭代。

任何人都可以对此有所了解吗?

4

1 回答 1

1

你不需要递归。只需遍历序列中的位。开始pos = tree。对于每一位,向下移动树:pos = pos[bit]. 如果pos仍然是列表,则继续下一位。如果pos不是列表,则在此处输出字符并设置pos回根tree并继续下一位。如果您以posnot equal to离开循环tree,请注意您收到不完整代码的错误。

于 2013-04-28T15:47:31.297 回答