phrase='hello overflow'
sequence='00100011101010000110101011000110110100'
tree=[
[
[
[' ', 'f'],
['h', 'r']
],
[
['w', 'v'],
'e'
]
],
['l', 'o']
]
我在执行列表“树”的迭代时遇到了一些问题。我想要做的是,给定输入比特流,在这种情况下“序列”,“树”相应地迭代到每个比特,例如:
如果我想要字母'h',在“短语”中,它对应于“序列”中的4个第一位,(0010),我必须转到树[0] [0] [1] [0]
我有2个关于如何做到这一点的想法,其中一个是通过使用这样的for循环:
for bit in phrase:
if len(tree[bit])>1:
calls recursive method, plus some rules
def recursive(list,bit):
return list[bit]
但是这给了我一个问题,因为我无法从流中提供新的比特,而在循环内部来自递归方法。
另一种是在“序列”和“树”之间使用某种并行迭代。
任何人都可以对此有所了解吗?
答案 0 :(得分:1)
您不需要递归。只需遍历序列中的位。从pos = tree
开始。对于每个位,向下移动树:pos = pos[bit]
。如果pos
仍然是列表,请继续下一位。如果pos
不是列表,则在那里输出字符并将pos
设置回根tree
并继续下一位。如果您保留pos
不等于tree
的循环,请注意您收到的代码不完整的错误。